Þ¥bonds€¬cell_resultsÞkÙ$cf8dca6c-1fc8-11eb-1f89-099e6ba53c22Цqueued¤logs�§running¦output†¤bodyÚ

It looks like the ECS distribution is not normally distributed, even though $B$ is.

👉 How does $\overline{\text{ECS}(B)}$ compare to $\text{ECS}(\overline{B})$? What is the probability that $\text{ECS}(B)$ lies above $\text{ECS}(\overline{B})$?

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<�ö°persist_js_state·has_pluto_hook_features§cell_idÙ$cf8dca6c-1fc8-11eb-1f89-099e6ba53c22¹depends_on_disabled_cells§runtimeÎðyµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$f2e55166-25ff-11eb-0297-796e97c62b07Цqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ<ƒ%¯°persist_js_state·has_pluto_hook_features§cell_idÙ$f2e55166-25ff-11eb-0297-796e97c62b07¹depends_on_disabled_cells§runtimeÍ蟵published_object_keys�¸depends_on_skipped_cells§erroredÂÙ$36f8c1e8-2433-11eb-1f6e-69dc552a4a07Цqueued¤logs�§running¦output†¤bodyÙ%hint (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚG ‘?°persist_js_state·has_pluto_hook_features§cell_idÙ$36f8c1e8-2433-11eb-1f6e-69dc552a4a07¹depends_on_disabled_cells§runtimeÎ~µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$3a35598a-2527-11eb-37e5-3b3e4c63c4f7Цqueued¤logs�§running¦output†¤bodyÚù

Exercise XX: Lecture transcript

(MIT students only)

Please see the link for hw 9 transcript document on Canvas. We want each of you to correct about 500 lines, but don’t spend more than 20 minutes on it. See the the beginning of the document for more instructions. :point_right: Please mention the name of the video(s) and the line ranges you edited:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<„°l°persist_js_state·has_pluto_hook_features§cell_idÙ$3a35598a-2527-11eb-37e5-3b3e4c63c4f7¹depends_on_disabled_cells§runtimeÎpµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$9eb07a6e-2687-11eb-0de3-7bc6aa0eefb0Цqueued¤logs�§running¦output†¤body§missing¤mimeªtext/plain¬rootassignee´co2_to_melt_snowball²last_run_timestampËAÚFüRn°persist_js_state·has_pluto_hook_features§cell_idÙ$9eb07a6e-2687-11eb-0de3-7bc6aa0eefb0¹depends_on_disabled_cells§runtimeÍ@aµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$2bbf5a70-2676-11eb-1085-7130d4a30443Цqueued¤logs�§running¦output†¤body§1000000¤mimeªtext/plain¬rootassignee¦CO2max²last_run_timestampËAÚFšç°persist_js_state·has_pluto_hook_features§cell_idÙ$2bbf5a70-2676-11eb-1085-7130d4a30443¹depends_on_disabled_cells§runtimeÍ*bµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$371352ec-2433-11eb-153d-379afa8ed15eЦqueued¤logs�§running¦output†¤bodyÙ/still_missing (generic function with 2 methods)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚG+6ð°persist_js_state·has_pluto_hook_features§cell_idÙ$371352ec-2433-11eb-153d-379afa8ed15e¹depends_on_disabled_cells§runtimeÎ hεpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$09901de6-2672-11eb-3d50-05b176b729e7Цqueued¤logs�§running¦output†¤body§missing¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚF <°persist_js_state·has_pluto_hook_features§cell_idÙ$09901de6-2672-11eb-3d50-05b176b729e7¹depends_on_disabled_cells§runtimeÍEXµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$607058ec-253c-11eb-0fb6-add8cfb73a4fЦqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚFûò°persist_js_state·has_pluto_hook_features§cell_idÙ$607058ec-253c-11eb-0fb6-add8cfb73a4f¹depends_on_disabled_cells§runtimeÎ Yµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$372002e4-2433-11eb-0b25-39ce1b1dd3d1Цqueued¤logs�§running¦output†¤bodyÙ.keep_working (generic function with 2 methods)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚG6Z>°persist_js_state·has_pluto_hook_features§cell_idÙ$372002e4-2433-11eb-0b25-39ce1b1dd3d1¹depends_on_disabled_cells§runtimeÎ Xàµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$736515ba-2685-11eb-38cb-65bfcf8d1b8dЦqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ<„ û°persist_js_state·has_pluto_hook_features§cell_idÙ$736515ba-2685-11eb-38cb-65bfcf8d1b8d¹depends_on_disabled_cells§runtimeÍ5¼µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$5b5f25f0-266c-11eb-25d4-17e411c850c9Цqueued¤logs�§running¦output†¤bodyÚÝ

Exercise 1.5 - Running the model

In the lecture notebook we introduced a mutable struct EBM (energy balance model), which contains:

EBM also contains the simulation results, in two arrays:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<‚4H°persist_js_state·has_pluto_hook_features§cell_idÙ$5b5f25f0-266c-11eb-25d4-17e411c850c9¹depends_on_disabled_cells§runtimeÎ ë$µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$049a866e-2672-11eb-29f7-bfea7ad8f572Цqueued¤logs�§running¦output†¤body§missing¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚF»„°persist_js_state·has_pluto_hook_features§cell_idÙ$049a866e-2672-11eb-29f7-bfea7ad8f572¹depends_on_disabled_cells§runtimeÍ;iµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$49cb5174-1fc3-11eb-3670-c3868c9b0255Цqueued¤logs�§running¦output†¤bodyȨã ¤mime­image/svg+xml¬rootassigneeÀ²last_run_timestampËAÚE̿װpersist_js_state·has_pluto_hook_features§cell_idÙ$49cb5174-1fc3-11eb-3670-c3868c9b0255¹depends_on_disabled_cells§runtimeÎ{­§µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$09ce27ca-268c-11eb-0cdd-c9801db876f8Цqueued¤logs�§running¦output†¤bodyÙ0
Parameters
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<„N×°persist_js_state·has_pluto_hook_features§cell_idÙ$09ce27ca-268c-11eb-0cdd-c9801db876f8¹depends_on_disabled_cells§runtimeήôµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$53c2eaf6-268b-11eb-0899-b91c03713da4Цqueued¤logs�§running¦output†¤bodyÙú

Hint

@bind log_CO2 Slider(�)
CO2 = 10^log_CO2
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚGo‡°persist_js_state·has_pluto_hook_features§cell_idÙ$53c2eaf6-268b-11eb-0899-b91c03713da4¹depends_on_disabled_cells§runtimeÎ͵published_object_keys�¸depends_on_skipped_cells§erroredÂÙ$9c32db5c-1fc9-11eb-029a-d5d554de1067Цqueued¤logs�§running¦output†¤bodyÚL

Exercise 1.6 - Application to policy relevant questions

We talked about two emissions scenarios: RCP2.6 (strong mitigation - controlled CO2 concentrations) and RCP8.5 (no mitigation - high CO2 concentrations). These are given by the following functions:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<‚÷M°persist_js_state·has_pluto_hook_features§cell_idÙ$9c32db5c-1fc9-11eb-029a-d5d554de1067¹depends_on_disabled_cells§runtimeÎüLµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$37552044-2433-11eb-1984-d16e355a7c10Цqueued¤logs�§running¦output†¤bodyÙ[TODO¤mime©text/html¬rootassignee¤TODO²last_run_timestampËAÚGh|¿°persist_js_state·has_pluto_hook_features§cell_idÙ$37552044-2433-11eb-1984-d16e355a7c10¹depends_on_disabled_cells§runtimeÍ‚zµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$16348b6a-1fc2-11eb-0b9c-65df528db2a1Цqueued¤logs�§running¦output†¤bodyÙy
Exercise 1.1 - Develop understanding for feedbacks and climate sensitivity
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<€Í£°persist_js_state·has_pluto_hook_features§cell_idÙ$16348b6a-1fc2-11eb-0b9c-65df528db2a1¹depends_on_disabled_cells§runtime΋µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$21524c08-2433-11eb-0c55-47b1bdc9e459Цqueued¤logs�§running¦output†¤bodyÙ…

Homework 9: Climate modeling I

18.S191, fall 2020

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<€$ݰpersist_js_state·has_pluto_hook_features§cell_idÙ$21524c08-2433-11eb-0c55-47b1bdc9e459¹depends_on_disabled_cells§runtime΃µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$1f148d9a-1fc8-11eb-158e-9d784e390b24Цqueued¤logs�§running¦output†¤bodyÉ2  ¤mime­image/svg+xml¬rootassigneeÀ²last_run_timestampËAÚEéÑp°persist_js_state·has_pluto_hook_features§cell_idÙ$1f148d9a-1fc8-11eb-158e-9d784e390b24¹depends_on_disabled_cells§runtimeζø¥µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$11096250-2544-11eb-057b-d7112f20b05cЦqueued¤logs�§running¦output†¤bodyÙ¤

Exercise 2.2

👉 Find the lowest CO₂ concentration necessary to melt the Snowball, programatically.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<„“d°persist_js_state·has_pluto_hook_features§cell_idÙ$11096250-2544-11eb-057b-d7112f20b05c¹depends_on_disabled_cells§runtimeÎùˆµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$7d815988-1fc7-11eb-322a-4509e7128ce3Цqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚAç#À°persist_js_state·has_pluto_hook_features§cell_idÙ$7d815988-1fc7-11eb-322a-4509e7128ce3¹depends_on_disabled_cells§runtimeÎc’>µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$1e06178a-1fbf-11eb-32b3-61769a79b7c0Цqueued¤logs‘ˆ¤lineÿ£msg’Ú,¡ Activating new project at `/tmp/jl_4MXcLy`  Updating registry at `~/.julia/registries/General.toml`  Resolving package versions...  Updating `/tmp/jl_4MXcLy/Project.toml`  [31c24e10] + Distributions v0.25.118  [b964fa9f] + LaTeXStrings v1.4.0  [91a5bcdd] + Plots v1.40.14  [7f904dfe] + PlutoUI v0.7.64  [9a3f8284] + Random  Updating `/tmp/jl_4MXcLy/Manifest.toml`  [6e696c72] + AbstractPlutoDingetjes v1.3.2  [66dad0bd] + AliasTables v1.1.3  [d1d4a3ce] + BitFlags v0.1.9  [d360d2e6] + ChainRulesCore v1.25.1  [9e997f8a] + ChangesOfVariables v0.1.10  [944b1d66] + CodecZlib v0.7.8  [35d6a980] + ColorSchemes v3.29.0  [3da002f7] + ColorTypes v0.12.1  [c3611d14] + ColorVectorSpace v0.11.0  [5ae59095] + Colors v0.13.1  [34da2185] + Compat v4.16.0  [f0e56b4a] + ConcurrentUtilities v2.5.0  [187b0558] + ConstructionBase v1.5.8  [d38c429a] + Contour v0.6.3  [9a962f9c] + DataAPI v1.16.0  [864edb3b] + DataStructures v0.18.22  [b429d917] + DensityInterface v0.4.0  [31c24e10] + Distributions v0.25.118  [ffbed154] + DocStringExtensions v0.9.5  [460bff9d] + ExceptionUnwrapping v0.1.11  [c87230d0] + FFMPEG v0.4.2  [1a297f60] + FillArrays v1.13.0  [53c48c17] + FixedPointNumbers v0.8.5  [1fa38f19] + Format v1.3.7  [28b8d3ca] + GR v0.73.6  [42e2da0e] + Grisu v1.0.2  [cd3eb016] + HTTP v1.10.16  [34004b35] + HypergeometricFunctions v0.3.28  [47d2ed2b] + Hyperscript v0.0.5  [ac1192a8] + HypertextLiteral v0.9.5  [b5f81e59] + IOCapture v0.2.5  [3587e190] + InverseFunctions v0.1.17  [92d709cd] + IrrationalConstants v0.2.4  [1019f520] + JLFzf v0.1.11  [692b3bcd] + JLLWrappers v1.7.0  [682c06a0] + JSON v0.21.4  [b964fa9f] + LaTeXStrings v1.4.0  [23fbe1c1] + Latexify v0.16.8  [2ab3a3ac] + LogExpFunctions v0.3.28  [e6f89c97] + LoggingExtras v1.1.0  [6c6e2e6c] + MIMEs v1.1.0  [1914dd2f] + MacroTools v0.5.16  [739be429] + MbedTLS v1.1.9  [442fdcdd] + Measures v0.3.2  [e1d29d7a] + Missings v1.2.0  [77ba4419] + NaNMath v1.0.3  [4d8831e6] + OpenSSL v1.5.0  [bac558e1] + OrderedCollections v1.8.1  [90014a1f] + PDMats v0.11.31  [69de0a69] + Parsers v2.8.3  [ccf2f8ad] + PlotThemes v3.3.0  [995b91a9] + PlotUtils v1.4.3  [91a5bcdd] + Plots v1.40.14  [7f904dfe] + PlutoUI v0.7.64  [aea7be01] + PrecompileTools v1.2.1  [21216c6a] + Preferences v1.4.3  [43287f4e] + PtrArrays v1.3.0  [1fd47b50] + QuadGK v2.11.2  [3cdcf5f2] + RecipesBase v1.3.4  [01d81517] + RecipesPipeline v0.6.12  [189a3867] + Reexport v1.2.2  [05181044] + RelocatableFolders v1.0.1  [ae029012] + Requires v1.3.1  [79098fc4] + Rmath v0.8.0  [6c6a2e73] + Scratch v1.2.1  [992d4aef] + Showoff v1.0.3  [777ac1f9] + SimpleBufferStream v1.2.0  [a2af1166] + SortingAlgorithms v1.2.1  [276daf66] + SpecialFunctions v2.5.1  [860ef19b] + StableRNGs v1.0.3  [82ae8749] + StatsAPI v1.7.1  [2913bbd2] + StatsBase v0.34.4  [4c63d2b9] + StatsFuns v1.4.0  [62fd8b95] + TensorCore v0.1.1  [3bb67fe8] + TranscodingStreams v0.11.3  [410a4b4d] + Tricks v0.1.10  [5c2747f8] + URIs v1.5.2  [1cfade01] + UnicodeFun v0.4.1  [1986cc42] + Unitful v1.23.1  [45397f5d] + UnitfulLatexify v1.7.0  [41fe7b60] + Unzip v0.2.0  [6e34b625] + Bzip2_jll v1.0.9+0  [83423d85] + Cairo_jll v1.18.5+0  [ee1fde0b] + Dbus_jll v1.16.2+0  [2702e6a9] + EpollShim_jll v0.0.20230411+1  [2e619515] + Expat_jll v2.6.5+0  [b22a6f82] + FFMPEG_jll v4.4.4+1  [a3f928ae] + Fontconfig_jll v2.16.0+0  [d7e528f0] + FreeType2_jll v2.13.4+0  [559328eb] + FriBidi_jll v1.0.17+0  [0656b61e] + GLFW_jll v3.4.0+2  [d2c73de3] + GR_jll v0.73.6+0  [78b55507] + Gettext_jll v0.21.0+0  [7746bdde] + Glib_jll v2.84.0+0  [3b182d85] + Graphite2_jll v1.3.15+0  [2e76f6c2] + HarfBuzz_jll v8.5.1+0  [aacddb02] + JpegTurbo_jll v3.1.1+0  [c1c5ebd0] + LAME_jll v3.100.2+0  [88015f11] + LERC_jll v3.0.0+1  [1d63c593] + LLVMOpenMP_jll v18.1.8+0  [dd4b983a] + LZO_jll v2.10.3+0  [e9f186c6] + Libffi_jll v3.4.7+0  [7e76a0d4] + Libglvnd_jll v1.7.1+1  [94ce4f54] + Libiconv_jll v1.18.0+0  [4b2f31a3] + Libmount_jll v2.41.0+0  [89763e89] + Libtiff_jll v4.5.1+1  [38a345b3] + Libuuid_jll v2.41.0+0  [e7412a2a] + Ogg_jll v1.3.5+1  [458c3c95] + OpenSSL_jll v3.5.0+0  [efe28fd5] + OpenSpecFun_jll v0.5.6+0  [91d4177d] + Opus_jll v1.3.3+0  [36c8627f] + Pango_jll v1.56.3+0  [30392449] + Pixman_jll v0.44.2+0  [c0090381] + Qt6Base_jll v6.7.1+1  [f50d1b31] + Rmath_jll v0.5.1+0  [a44049a8] + Vulkan_Loader_jll v1.3.243+0  [a2964d1f] + Wayland_jll v1.23.1+0  [2381bf8a] + Wayland_protocols_jll v1.44.0+0  [02c8fc9c] + XML2_jll v2.13.6+1  [ffd25f8a] + XZ_jll v5.8.1+0  [f67eecfb] + Xorg_libICE_jll v1.1.2+0  [c834827a] + Xorg_libSM_jll v1.2.6+0  [4f6342f7] + Xorg_libX11_jll v1.8.12+0  [0c0b7dd1] + Xorg_libXau_jll v1.0.13+0  [935fb764] + Xorg_libXcursor_jll v1.2.4+0  [a3789734] + Xorg_libXdmcp_jll v1.1.6+0  [1082639a] + Xorg_libXext_jll v1.3.7+0  [d091e8ba] + Xorg_libXfixes_jll v6.0.1+0  [a51aa0fd] + Xorg_libXi_jll v1.8.3+0  [d1454406] + Xorg_libXinerama_jll v1.1.6+0  [ec84b674] + Xorg_libXrandr_jll v1.5.5+0  [ea2f1a96] + Xorg_libXrender_jll v0.9.12+0  [c7cfdc94] + Xorg_libxcb_jll v1.17.1+0  [cc61e674] + Xorg_libxkbfile_jll v1.1.3+0  [e920d4aa] + Xorg_xcb_util_cursor_jll v0.1.4+0  [12413925] + Xorg_xcb_util_image_jll v0.4.1+0  [2def613f] + Xorg_xcb_util_jll v0.4.1+0  [975044d2] + Xorg_xcb_util_keysyms_jll v0.4.1+0  [0d47668e] + Xorg_xcb_util_renderutil_jll v0.3.10+0  [c22f9ab0] + Xorg_xcb_util_wm_jll v0.4.2+0  [35661453] + Xorg_xkbcomp_jll v1.4.7+0  [33bec58e] + Xorg_xkeyboard_config_jll v2.44.0+0  [c5fb5394] + Xorg_xtrans_jll v1.6.0+0  [3161d3a3] + Zstd_jll v1.5.7+1  [35ca27e7] + eudev_jll v3.2.14+0  [214eeab7] + fzf_jll v0.61.1+0  [a4ae2306] + libaom_jll v3.11.0+0  [0ac62f75] + libass_jll v0.15.2+0  [1183f4f0] + libdecor_jll v0.2.2+0  [2db6ffa8] + libevdev_jll v1.13.4+0  [f638f0a6] + libfdk_aac_jll v2.0.3+0  [36db933b] + libinput_jll v1.28.1+0  [b53b4c65] + libpng_jll v1.6.49+0  [f27f6e37] + libvorbis_jll v1.3.7+2  [009596ad] + mtdev_jll v1.1.7+0  [1270edf5] + x264_jll v2021.5.5+0  [dfaa095f] + x265_jll v3.5.0+0  [d8fb68d0] + xkbcommon_jll v1.8.1+0  [0dad84c5] + ArgTools  [56f22d72] + Artifacts  [2a0f44e3] + Base64  [ade2ca70] + Dates  [8bb1440f] + DelimitedFiles  [f43a241f] + Downloads  [7b1f6079] + FileWatching  [b77e0a4c] + InteractiveUtils  [b27032c2] + LibCURL  [76f85450] + LibGit2  [8f399da3] + Libdl  [37e2e46d] + LinearAlgebra  [56ddb016] + Logging  [d6f4376e] + Markdown  [a63ad114] + Mmap  [ca575930] + NetworkOptions  [44cfe95a] + Pkg  [de0858da] + Printf  [3fa0cd96] + REPL  [9a3f8284] + Random  [ea8e919c] + SHA  [9e88b42a] + Serialization  [6462fe0b] + Sockets  [2f01184e] + SparseArrays  [10745b16] + Statistics  [4607b0f0] + SuiteSparse  [fa267f1f] + TOML  [a4e569a6] + Tar  [8dfed614] + Test  [cf7118a7] + UUIDs  [4ec0a83e] + Unicode  [e66e0078] + CompilerSupportLibraries_jll  [deac9b47] + LibCURL_jll  [29816b5a] + LibSSH2_jll  [c8ffd9c3] + MbedTLS_jll  [14a3606d] + MozillaCACerts_jll  [4536629a] + OpenBLAS_jll  [05823500] + OpenLibm_jll  [efcefdf7] + PCRE2_jll  [83775a58] + Zlib_jll  [8e850b90] + libblastrampoline_jll  [8e850ede] + nghttp2_jll  [3f19e933] + p7zip_jll ªtext/plain§cell_idÙ$1e06178a-1fbf-11eb-32b3-61769a79b7c0¦kwargs�¢id´PlutoRunner_d1acb81e¤fileÙP/home/runner/.julia/packages/Pluto/6smog/src/runner/PlutoRunner/src/io/stdout.jl¥group¦stdout¥level®LogLevel(-555)§running¦output†¤bodyÙ:
Package dependencies
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ@þ:Þ°persist_js_state·has_pluto_hook_features§cell_idÙ$1e06178a-1fbf-11eb-32b3-61769a79b7c0¹depends_on_disabled_cells§runtimeÏÙò$¦µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$169727be-2433-11eb-07ae-ab7976b5be90Цqueued¤logs�§running¦output†¤bodyÙB

homework 9, version 0

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<€ ·°persist_js_state·has_pluto_hook_features§cell_idÙ$169727be-2433-11eb-07ae-ab7976b5be90¹depends_on_disabled_cells§runtimeÎqĵpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$3e310cf8-25ec-11eb-07da-cb4a2c71ae34Цqueued¤logs�§running¦output†¤bodyÚï

We talked about a second theory – a large increase in CO₂ (by volcanoes) could have caused a strong enough greenhouse effect to melt the Snowball. If we imagine that the CO₂ then decreased (e.g. by getting sequestered by the now liquid ocean), we might be able to explain how we transitioned from a hostile Snowball Earth to today's habitable "Waterball" Earth.

In this exercise, you will estimate how much COâ‚‚ would be needed to melt the Snowball and visualize a possible trajectory for Earth's climate over the past 700 million years by making an interactive bifurcation diagram.

Exercise 2.1

In the lecture notebook (video above), we had a bifurcation diagram of $S$ (solar insolation) vs $T$ (temperature). We increased $S$, watched our point move right in the diagram until we found the tipping point. This time we will do the same, but we vary the COâ‚‚ concentration, and keep $S$ fixed at its default (present day) value.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<ƒpH°persist_js_state·has_pluto_hook_features§cell_idÙ$3e310cf8-25ec-11eb-07da-cb4a2c71ae34¹depends_on_disabled_cells§runtimeÎOdµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$298deff4-2676-11eb-2595-e7e22f613ea1Цqueued¤logs�§running¦output†¤body¢10¤mimeªtext/plain¬rootassignee¦CO2min²last_run_timestampËAÚFš…°persist_js_state·has_pluto_hook_features§cell_idÙ$298deff4-2676-11eb-2595-e7e22f613ea1¹depends_on_disabled_cells§runtimeÍ,kµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$f688f9f2-2671-11eb-1d71-a57c9817433fЦqueued¤logs�§running¦output†¤bodyÙ6temperature_response (generic function with 2 methods)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚFó °persist_js_state·has_pluto_hook_features§cell_idÙ$f688f9f2-2671-11eb-1d71-a57c9817433f¹depends_on_disabled_cells§runtimeÎ <©µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$51e2e742-25a1-11eb-2511-ab3434eacc3eЦqueued¤logs�§running¦output†¤bodyÙ¢

Hint

The function findfirst might be helpful.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚG†©°persist_js_state·has_pluto_hook_features§cell_idÙ$51e2e742-25a1-11eb-2511-ab3434eacc3e¹depends_on_disabled_cells§runtimeζ>εpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$746aa5bc-266c-11eb-14c9-63ccc313f5deЦqueued¤logs�§running¦output†¤body…¦prefixºMain.workspace#3.Model.EBM¨elements›’¡T’…¦prefix§Float64¨elements‘’’¤14.0ªtext/plain¤type¥Array¬prefix_short ¨objectid°1e4765129b1d3845Ù!application/vnd.pluto.tree+object’¡t’…¦prefix§Float64¨elements‘’’¦1850.0ªtext/plain¤type¥Array¬prefix_short ¨objectid°af30aec13cef8738Ù!application/vnd.pluto.tree+object’£Î”t’£1.0ªtext/plain’£CO2’Ù$#13 (generic function with 1 method)ªtext/plain’¡C’¤51.0ªtext/plain’¡a’£5.0ªtext/plain’¡A’¥221.2ªtext/plain’¡B’¤-1.3ªtext/plain’¦CO2_PI’¥280.0ªtext/plain’¢Î±’£0.3ªtext/plain’¡S’¦1368.0ªtext/plain¤type¦struct¬prefix_short£EBM¨objectid°d1998c7a254e9916¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee©empty_ebm²last_run_timestampËAÚF øÂ°persist_js_state·has_pluto_hook_features§cell_idÙ$746aa5bc-266c-11eb-14c9-63ccc313f5de¹depends_on_disabled_cells§runtimeΪpµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$68b2a560-2536-11eb-0cc4-27793b4d6a70Цqueued¤logs�§running¦output†¤bodyÙ4add_cold_hot_areas! (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚF‚¾U°persist_js_state·has_pluto_hook_features§cell_idÙ$68b2a560-2536-11eb-0cc4-27793b4d6a70¹depends_on_disabled_cells§runtimeÎôOµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$23335418-2433-11eb-05e4-2b35dc6cca0eЦqueued¤logs�§running¦output†¤bodyƒ¨elements’’¤name’«"Jazzy Doe"ªtext/plain’«kerberos_id’¦"jazz"ªtext/plain¤typeªNamedTuple¨objectid°eb71b675ed8a366b¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee§student²last_run_timestampËAÚAOq¤°persist_js_state·has_pluto_hook_features§cell_idÙ$23335418-2433-11eb-05e4-2b35dc6cca0e¹depends_on_disabled_cells§runtimeÍ<½µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$25f92dec-1fc4-11eb-055d-f34deea81d0eЦqueued¤logs�§running¦output†¤bodyÉ1@ ¤mime­image/svg+xml¬rootassigneeÀ²last_run_timestampËAÚDø†Ï°persist_js_state·has_pluto_hook_features§cell_idÙ$25f92dec-1fc4-11eb-055d-f34deea81d0e¹depends_on_disabled_cells§runtimeÎë÷¾µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$aea0d0b4-2672-11eb-231e-395c863827d3Цqueued¤logs�§running¦output†¤body§missing¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚF ¦z°persist_js_state·has_pluto_hook_features§cell_idÙ$aea0d0b4-2672-11eb-231e-395c863827d3¹depends_on_disabled_cells§runtimeÍDsµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$18be4f7c-2433-11eb-33cb-8d90ca6f124cЦqueued¤logs�§running¦output†¤bodyÙm

Submission by: Jazzy Doe (jazz@mit.edu)

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚATH°persist_js_state·has_pluto_hook_features§cell_idÙ$18be4f7c-2433-11eb-33cb-8d90ca6f124c¹depends_on_disabled_cells§runtimeÎԾ˵published_object_keys�¸depends_on_skipped_cells§erroredÂÙ$5041cdee-2527-11eb-154f-0b0c68e11fe3Цqueued¤logs�§running¦output†¤bodyÙ‘

Abstraction, lines 1-219; Array Basics, lines 1-137; Course Intro, lines 1-144 (for example)

¤mime©text/html¬rootassignee®lines_i_edited²last_run_timestampËAÚFüv°persist_js_state·has_pluto_hook_features§cell_idÙ$5041cdee-2527-11eb-154f-0b0c68e11fe3¹depends_on_disabled_cells§runtimeΆíµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$378aed18-252b-11eb-0b37-a3b511af2cb5Цqueued¤logs�§running¦output†¤bodyÉãB ¤mime­image/svg+xml¬rootassigneeÀ²last_run_timestampËAÚFð~í°persist_js_state·has_pluto_hook_features§cell_idÙ$378aed18-252b-11eb-0b37-a3b511af2cb5¹depends_on_disabled_cells§runtimeÎ;éŵpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$b6d7a362-1fc8-11eb-03bc-89464b55c6fcЦqueued¤logs�§running¦output†¤bodyÙ<

Answer:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<�ݰpersist_js_state·has_pluto_hook_features§cell_idÙ$b6d7a362-1fc8-11eb-03bc-89464b55c6fc¹depends_on_disabled_cells§runtimeÎQµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$cf276892-25e7-11eb-38f0-03f75c90dd9eЦqueued¤logs�§running¦output†¤bodyÙ4

Hello world!

¤mime©text/html¬rootassigneeÙ(observations_from_the_order_of_averaging²last_run_timestampËAÚEò<æ°persist_js_state·has_pluto_hook_features§cell_idÙ$cf276892-25e7-11eb-38f0-03f75c90dd9e¹depends_on_disabled_cells§runtimeÎ{oµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$cb15cd88-25ed-11eb-2be4-f31500a726c8Цqueued¤logs�§running¦output†¤bodyÙÃ

Hint

Use a condition on the albedo or temperature to check whether the Snowball has melted.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚG”İpersist_js_state·has_pluto_hook_features§cell_idÙ$cb15cd88-25ed-11eb-2be4-f31500a726c8¹depends_on_disabled_cells§runtimeÎö\µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$37061f1e-2433-11eb-3879-2d31dc70a771Цqueued¤logs�§running¦output†¤bodyÙ'almost (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚG •°persist_js_state·has_pluto_hook_features§cell_idÙ$37061f1e-2433-11eb-3879-2d31dc70a771¹depends_on_disabled_cells§runtimeÎ÷»µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$3c7d33da-253d-11eb-0c5a-9b0d524c42f8Цqueued¤logs�§running¦output†¤bodyÙf¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚFž/8°persist_js_state·has_pluto_hook_features§cell_idÙ$3c7d33da-253d-11eb-0c5a-9b0d524c42f8¹depends_on_disabled_cells§runtimeÎ$âUµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$9c1f73e0-268a-11eb-2bf1-216a5d869568Цqueued¤logs�§running¦output†¤bodyÙô

If you like, make the visualization more informative! Like in the lecture notebook, you could add a trail behind the black dot, or you could plot the stable and unstable branches. It's up to you!

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<„zö°persist_js_state·has_pluto_hook_features§cell_idÙ$9c1f73e0-268a-11eb-2bf1-216a5d869568¹depends_on_disabled_cells§runtimeÎáoµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$56b68356-2601-11eb-39a9-5f4b8e580b87Цqueued¤logs�§running¦output†¤bodyÙ’

Reveal answer:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚA≰persist_js_state·has_pluto_hook_features§cell_idÙ$56b68356-2601-11eb-39a9-5f4b8e580b87¹depends_on_disabled_cells§runtimeÎ4¾\µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$12cbbab0-2671-11eb-2b1f-038c206e84ceЦqueued¤logs�§running¦output†¤bodyÚA

Again, look inside simulated_model and notice that T and t have accumulated the simulation results.

In this simulation, we used T0 = 14 and CO2 = t -> 280, which is why T is constant during our simulation. These parameters are the default, pre-industrial values, and our model is based on this equilibrium.

👉 Run a simulation with policy scenario RCP8.5, and plot the computed temperature graph. What is the global temperature at 2100?

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<‚�°persist_js_state·has_pluto_hook_features§cell_idÙ$12cbbab0-2671-11eb-2b1f-038c206e84ce¹depends_on_disabled_cells§runtimeÎɱµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$9596c2dc-2671-11eb-36b9-c1af7e5f1089Цqueued¤logs�§running¦output†¤body§missing¤mimeªtext/plain¬rootassigneeµsimulated_rcp85_model²last_run_timestampËAÚF´‘°persist_js_state·has_pluto_hook_features§cell_idÙ$9596c2dc-2671-11eb-36b9-c1af7e5f1089¹depends_on_disabled_cells§runtimeÍGDµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$f94a1d56-2671-11eb-2cdc-810a9c7a8a5fЦqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ<‚¢D°persist_js_state·has_pluto_hook_features§cell_idÙ$f94a1d56-2671-11eb-2cdc-810a9c7a8a5f¹depends_on_disabled_cells§runtimeÍçsµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$4b091fac-2672-11eb-0db8-75457788d85eЦqueued¤logs�§running¦output†¤bodyÚ

Additional parameters can be set using keyword arguments. For example:

Model.EBM(14, 1850, 1, t -> 280.0; B=-2.0)

Creates the same model as before, but with B = -2.0.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<‚º�°persist_js_state·has_pluto_hook_features§cell_idÙ$4b091fac-2672-11eb-0db8-75457788d85e¹depends_on_disabled_cells§runtimeÎ÷Wµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$1eabe908-268b-11eb-329b-b35160ec951eЦqueued¤logs�§running¦output†¤bodyÙÝ

👉 Create a slider for CO2 between CO2min and CO2max. Just like the horizontal axis of our plot, we want the slider to be logarithmic.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<ƒµ-°persist_js_state·has_pluto_hook_features§cell_idÙ$1eabe908-268b-11eb-329b-b35160ec951e¹depends_on_disabled_cells§runtimeεoµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$d44daea2-252f-11eb-364f-377ae504dc04Цqueued¤logs�§running¦output†¤body²2.6393298091640482¤mimeªtext/plain¬rootassignee«ecs_of_mean²last_run_timestampËAÚEìyt°persist_js_state·has_pluto_hook_features§cell_idÙ$d44daea2-252f-11eb-364f-377ae504dc04¹depends_on_disabled_cells§runtimeÍ`•µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$971f401e-266c-11eb-3104-171ae299ef70Цqueued¤logs�§running¦output†¤bodyÙ[

You can set up an instance of EBM like so:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<‚^̰persist_js_state·has_pluto_hook_features§cell_idÙ$971f401e-266c-11eb-3104-171ae299ef70¹depends_on_disabled_cells§runtimeÎâ#µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$de95efae-2675-11eb-0909-73afcd68fd42Цqueued¤logs�§running¦output†¤body£-48¤mimeªtext/plain¬rootassignee¤Tneo²last_run_timestampËAÚFŸÒ°persist_js_state·has_pluto_hook_features§cell_idÙ$de95efae-2675-11eb-0909-73afcd68fd42¹depends_on_disabled_cells§runtimeÍ',µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$23e24d88-2530-11eb-26ef-c5e4e8b4f276Цqueued¤logs�§running¦output†¤body³0.34266853370674133¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚEòü°persist_js_state·has_pluto_hook_features§cell_idÙ$23e24d88-2530-11eb-26ef-c5e4e8b4f276¹depends_on_disabled_cells§runtimeÍdŸµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$2dfab366-25a1-11eb-15c9-b3dd9cd6b96cЦqueued¤logs�§running¦output†¤bodyÙŒ

👉 In what year are we expected to have doubled the CO₂ concentration, under policy scenario RCP8.5?

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<�:÷°persist_js_state·has_pluto_hook_features§cell_idÙ$2dfab366-25a1-11eb-15c9-b3dd9cd6b96c¹depends_on_disabled_cells§runtimeÎÚµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$1ea81214-1fca-11eb-2442-7b0b448b49d6Цqueued¤logs�§running¦output†¤bodyÚ

Exercise 2 - How did Snowball Earth melt?

In lecture 21 (see below), we discovered that increases in the brightness of the Sun are not sufficient to explain how Snowball Earth eventually melted.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<ƒ>ɰpersist_js_state·has_pluto_hook_features§cell_idÙ$1ea81214-1fca-11eb-2442-7b0b448b49d6¹depends_on_disabled_cells§runtimeÎécµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$a919d584-2670-11eb-1cf9-2327c8135d6dЦqueued¤logs�§running¦output†¤bodyÙµ

Have look inside this object. We see that T and t are initialized to a 1-element array.

Let's run our model:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<‚v}°persist_js_state·has_pluto_hook_features§cell_idÙ$a919d584-2670-11eb-1cf9-2327c8135d6d¹depends_on_disabled_cells§runtimeÎŽjµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$06c5139e-252d-11eb-2645-8b324b24c405Цqueued¤logs�§running¦output†¤bodyÚ©

We are interested in how the uncertainty in our input $B$ (the climate feedback paramter) propagates through our model to determine the uncertainty in our output $T(t)$, for a given emissions scenario. The goal of this exercise is to answer the following by using Monte Carlo Simulation for uncertainty propagation:

👉 What is the probability that we see more than 2°C of warming by 2100 under the low-emissions scenario RCP2.6? What about under the high-emissions scenario RCP8.5?

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<ƒ°persist_js_state·has_pluto_hook_features§cell_idÙ$06c5139e-252d-11eb-2645-8b324b24c405¹depends_on_disabled_cells§runtimeÎbùµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$b9f882d8-266b-11eb-2998-75d6539088c7Цqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ<�$y°persist_js_state·has_pluto_hook_features§cell_idÙ$b9f882d8-266b-11eb-2998-75d6539088c7¹depends_on_disabled_cells§runtimeÍê&µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$1843dae6-2689-11eb-2aaf-036eb2f9341dЦqueued¤logs�§running¦output†¤body…¦prefix§Float64¨elementsÜ’’§2.08467ªtext/plain’’¦5.0928ªtext/plain’’§2.38992ªtext/plain’’§4.42845ªtext/plain’’§4.36886ªtext/plain’’§2.22342ªtext/plain’’§1.53348ªtext/plain’’¥3.221ªtext/plain’ ’§2.86569ªtext/plain’ ’§2.37656ªtext/plain’ ’¦1.6003ªtext/plain’ ’§2.44421ªtext/plain’ ’§1.94336ªtext/plain’’§2.47175ªtext/plain’’§2.75275ªtext/plain’’§4.62015ªtext/plain’’§2.13501ªtext/plain’’§1.56871ªtext/plain’’§2.62535ªtext/plain’’§6.55421ªtext/plain¤more’Í~’§2.73358ªtext/plain’Í’¤2.16ªtext/plain’Í€’§2.92945ªtext/plain’Í�’¥3.338ªtext/plain’Í‚’§2.98041ªtext/plain’̓’§1.88202ªtext/plain’Í„’¦2.5971ªtext/plain’Í…’§2.34947ªtext/plain’͆’§2.13581ªtext/plain’͇’§2.82829ªtext/plain¤type¥Array¬prefix_short ¨objectid°805657125eb905a0¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee«ECS_samples²last_run_timestampËAÚEÑ]¯°persist_js_state·has_pluto_hook_features§cell_idÙ$1843dae6-2689-11eb-2aaf-036eb2f9341d¹depends_on_disabled_cells§runtimeγ|pµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$35f87c2e-253d-11eb-0d79-61d89c1d9b5eЦqueued¤logs�§running¦output†¤body±281.8382931264455¤mimeªtext/plain¬rootassignee£CO2²last_run_timestampËAÚFžºs°persist_js_state·has_pluto_hook_features§cell_idÙ$35f87c2e-253d-11eb-0d79-61d89c1d9b5e¹depends_on_disabled_cells§runtimeÍ;µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$e296c6e8-259c-11eb-1385-53f757f4d585Цqueued¤logs�§running¦output†¤bodyÚ1

👉 Change the value of $B$ using the slider above. What does it mean for a climate system to have a more negative value of $B$? Explain why we call $B$ the climate feedback parameter.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<€æu°persist_js_state·has_pluto_hook_features§cell_idÙ$e296c6e8-259c-11eb-1385-53f757f4d585¹depends_on_disabled_cells§runtimeÎ<~µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$06d28052-2531-11eb-39e2-e9613ab0401cЦqueued¤logs�§running¦output†¤body…¦prefixºMain.workspace#3.Model.EBM¨elements›’¡T’…¦prefix§Float64¨elements‘’’¥-48.0ªtext/plain¤type¥Array¬prefix_short ¨objectid¯cf7a83c7a71d5bdÙ!application/vnd.pluto.tree+object’¡t’…¦prefix§Float64¨elements‘’’£0.0ªtext/plain¤type¥Array¬prefix_short ¨objectid°96113d6b8ca4fef5Ù!application/vnd.pluto.tree+object’£Î”t’£5.0ªtext/plain’£CO2’Ù*CO2_const (generic function with 1 method)ªtext/plain’¡C’¤51.0ªtext/plain’¡a’£5.0ªtext/plain’¡A’¥221.2ªtext/plain’¡B’¤-1.3ªtext/plain’¦CO2_PI’¥280.0ªtext/plain’¢Î±’£0.3ªtext/plain’¡S’¦1368.0ªtext/plain¤type¦struct¬prefix_short£EBM¨objectid°6b0f3fe9d84ffa2f¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee£ebm²last_run_timestampËAÚF ÷M°persist_js_state·has_pluto_hook_features§cell_idÙ$06d28052-2531-11eb-39e2-e9613ab0401c¹depends_on_disabled_cells§runtimeÎ�“Qµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$e10a9b70-25a0-11eb-2aed-17ed8221c208Цqueued¤logs�§running¦output†¤bodyÈÏG ¤mime­image/svg+xml¬rootassigneeÀ²last_run_timestampËAÚFMìö°persist_js_state·has_pluto_hook_features§cell_idÙ$e10a9b70-25a0-11eb-2aed-17ed8221c208¹depends_on_disabled_cells§runtimeÎ µ—<µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$36e2dfea-2433-11eb-1c90-bb93ab25b33cЦqueued¤logs�§running¦output†¤bodyÙç

Before you submit

Remember to fill in your name and Kerberos ID at the top of this notebook.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚFþài°persist_js_state·has_pluto_hook_features§cell_idÙ$36e2dfea-2433-11eb-1c90-bb93ab25b33c¹depends_on_disabled_cells§runtimeÎ þϵpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$1312525c-1fc0-11eb-2756-5bc3101d2260Цqueued¤logs�§running¦output†¤bodyÚ0

Exercise 1 - policy goals under uncertainty

A recent ground-breaking review paper produced the most comprehensive and up-to-date estimate of the climate feedback parameter, which they find to be

$$B \approx \mathcal{N}(-1.3, 0.4),$$

i.e. our knowledge of the real value is normally distributed with a mean value $\overline{B} = -1.3$ W/m²/K and a standard deviation $\sigma = 0.4$ W/m²/K. These values are not very intuitive, so let us convert them into more policy-relevant numbers.

Definition: Equilibrium climate sensitivity (ECS) is defined as the amount of warming $\Delta T$ caused by a doubling of COâ‚‚ (e.g. from the pre-industrial value 280 ppm to 560 ppm), at equilibrium.

At equilibrium, the energy balance model equation is:

$$0 = \frac{S(1 - α)}{4} - (A - BT_{eq}) + a \ln\left( \frac{2\;\text{CO}₂_{\text{PI}}}{\text{CO}₂_{\text{PI}}} \right)$$

From this, we subtract the preindustrial energy balance, which is given by:

$$0 = \frac{S(1-α)}{4} - (A - BT_{0}),$$

The result of this subtraction, after rearranging, is our definition of $\text{ECS}$:

$$\text{ECS} \equiv T_{eq} - T_{0} = -\frac{a\ln(2)}{B}$$

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<€šª°persist_js_state·has_pluto_hook_features§cell_idÙ$1312525c-1fc0-11eb-2756-5bc3101d2260¹depends_on_disabled_cells§runtimeÎ Òîµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$0e19f82e-2685-11eb-2e99-0d094c1aa520Цqueued¤logs�§running¦output†¤bodyÙ6add_reference_points! (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚFŒÛ¶°persist_js_state·has_pluto_hook_features§cell_idÙ$0e19f82e-2685-11eb-2e99-0d094c1aa520¹depends_on_disabled_cells§runtimeÎ…¼µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$a0ef04b0-25e9-11eb-1110-cde93601f712Цqueued¤logs�§running¦output†¤bodyÙæ ¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<ƒRµ°persist_js_state·has_pluto_hook_features§cell_idÙ$a0ef04b0-25e9-11eb-1110-cde93601f712¹depends_on_disabled_cells§runtimeζݵpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$3f823490-266d-11eb-1ba4-d5a23975c335Цqueued¤logs�§running¦output†¤bodyÚé

Properties of an EBM obect:

NameDescription
ALinearized outgoing thermal radiation: offset [W/m²]
BLinearized outgoing thermal radiation: slope. or: climate feedback parameter [W/m²/°C]
αPlanet albedo, 0.0-1.0 [unitless]
SSolar insulation [W/m²]
CAtmosphere and upper-ocean heat capacity [J/m²/°C]
aCO₂ forcing effect [W/m²]
CO2_PIPre-industrial COâ‚‚ concentration [ppm]
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<‚Ho°persist_js_state·has_pluto_hook_features§cell_idÙ$3f823490-266d-11eb-1ba4-d5a23975c335¹depends_on_disabled_cells§runtimeÎÈ>µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$fe3304f8-2668-11eb-066d-fdacadce5a19Цqueued¤logs�§running¦output†¤bodyÚ

Before working on the homework, make sure that you have watched the first lecture on climate modeling 👆. We have included the important functions from this lecture notebook in the next cell. Feel free to have a look!

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<€v°persist_js_state·has_pluto_hook_features§cell_idÙ$fe3304f8-2668-11eb-066d-fdacadce5a19¹depends_on_disabled_cells§runtimeÎõ€µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$4c9173ac-2685-11eb-2129-99071821ebebЦqueued¤logs�§running¦output†¤bodyÚÙ

👉 Write a function step_model! that takes an existing ebm and new_CO2, which performs a step of our interactive process:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<ƒÔ‘°persist_js_state·has_pluto_hook_features§cell_idÙ$4c9173ac-2685-11eb-2129-99071821ebeb¹depends_on_disabled_cells§runtimeÎŒµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$3737be8e-2433-11eb-2049-2d6d8a5e4753Цqueued¤logs�§running¦output†¤bodyÙ)correct (generic function with 2 methods)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚGMC°persist_js_state·has_pluto_hook_features§cell_idÙ$3737be8e-2433-11eb-2049-2d6d8a5e4753¹depends_on_disabled_cells§runtimeÎ µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$bfb07a0a-2670-11eb-3938-772499c637b1Цqueued¤logs�§running¦output†¤body…¦prefixºMain.workspace#3.Model.EBM¨elements›’¡T’…¦prefix§Float64¨elements›’’¤14.0ªtext/plain’’¤14.0ªtext/plain’’¤14.0ªtext/plain’’¤14.0ªtext/plain’’¤14.0ªtext/plain’’¤14.0ªtext/plain’’¤14.0ªtext/plain’’¤14.0ªtext/plain’ ’¤14.0ªtext/plain¤more’Ì«’¤14.0ªtext/plain¤type¥Array¬prefix_short ¨objectid°5896abf443544e69Ù!application/vnd.pluto.tree+object’¡t’…¦prefix§Float64¨elements›’’¦1850.0ªtext/plain’’¦1851.0ªtext/plain’’¦1852.0ªtext/plain’’¦1853.0ªtext/plain’’¦1854.0ªtext/plain’’¦1855.0ªtext/plain’’¦1856.0ªtext/plain’’¦1857.0ªtext/plain’ ’¦1858.0ªtext/plain¤more’Ì«’¦2020.0ªtext/plain¤type¥Array¬prefix_short ¨objectid°8552b5441ccbdd4cÙ!application/vnd.pluto.tree+object’£Î”t’£1.0ªtext/plain’£CO2’Ù$#15 (generic function with 1 method)ªtext/plain’¡C’¤51.0ªtext/plain’¡a’£5.0ªtext/plain’¡A’¥221.2ªtext/plain’¡B’¤-1.3ªtext/plain’¦CO2_PI’¥280.0ªtext/plain’¢Î±’£0.3ªtext/plain’¡S’¦1368.0ªtext/plain¤type¦struct¬prefix_short£EBM¨objectid°8d045b681c13dfeb¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee¯simulated_model²last_run_timestampËAÚFP”°persist_js_state·has_pluto_hook_features§cell_idÙ$bfb07a0a-2670-11eb-3938-772499c637b1¹depends_on_disabled_cells§runtimeÎ׌µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$ee1be5dc-252b-11eb-0865-291aa823b9e9Цqueued¤logs�§running¦output†¤body©1850:2100¤mimeªtext/plain¬rootassignee¡t²last_run_timestampËAÚF/éѰpersist_js_state·has_pluto_hook_features§cell_idÙ$ee1be5dc-252b-11eb-0865-291aa823b9e9¹depends_on_disabled_cells§runtimeÍ0µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$e27b2cd4-252f-11eb-20ef-0354db6220c2Цqueued¤logs�§running¦output†¤body²3.0136345332325356¤mimeªtext/plain¬rootassignee«mean_of_ecs²last_run_timestampËAÚEí(»°persist_js_state·has_pluto_hook_features§cell_idÙ$e27b2cd4-252f-11eb-20ef-0354db6220c2¹depends_on_disabled_cells§runtimeÎ(ÀBµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$c4398f9c-1fc4-11eb-0bbb-37f066c6027dЦqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚAýíJ°persist_js_state·has_pluto_hook_features§cell_idÙ$c4398f9c-1fc4-11eb-0bbb-37f066c6027d¹depends_on_disabled_cells§runtimeÎçǵpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$f3abc83c-1fc7-11eb-1aa8-01ce67c8bddeЦqueued¤logs�§running¦output†¤bodyÙÁ

👉 Generate a probability distribution for the ECS based on the probability distribution function for $B$ above. Plot a histogram.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<�lưpersist_js_state·has_pluto_hook_features§cell_idÙ$f3abc83c-1fc7-11eb-1aa8-01ce67c8bdde¹depends_on_disabled_cells§runtimeÎéíµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$c78e02b4-268a-11eb-0af7-f7c7620fcc34Цqueued¤logs�§running¦output†¤bodyÙ\

The albedo feedback is implemented by the methods below:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<„dñ°persist_js_state·has_pluto_hook_features§cell_idÙ$c78e02b4-268a-11eb-0af7-f7c7620fcc34¹depends_on_disabled_cells§runtimeÎ µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$9cdc5f84-2671-11eb-3c78-e3495bc64d33Цqueued¤logs�§running¦output†¤bodyÙò

👉 Write a function temperature_response that takes a function CO2 and an optional value B as parameters, and returns the temperature at 2100 according to our model.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<‚Ý+°persist_js_state·has_pluto_hook_features§cell_idÙ$9cdc5f84-2671-11eb-3c78-e3495bc64d33¹depends_on_disabled_cells§runtimeÎ+?µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$3cbc95ba-2685-11eb-3810-3bf38aa33231Цqueued¤logs�§running¦output†¤bodyÙA

We used two helper functions:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<ƒ�ª°persist_js_state·has_pluto_hook_features§cell_idÙ$3cbc95ba-2685-11eb-3810-3bf38aa33231¹depends_on_disabled_cells§runtimeμ͵published_object_keys�¸depends_on_skipped_cells§erroredÂÙ$aed8f00e-266b-11eb-156d-8bb09de0dc2bЦqueued¤logs�§running¦output†¤bodyÙ]

👉 Create a graph to visualize ECS as a function of B.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<��°persist_js_state·has_pluto_hook_features§cell_idÙ$aed8f00e-266b-11eb-156d-8bb09de0dc2b¹depends_on_disabled_cells§runtimeÎÀ�µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$269200ec-259f-11eb-353b-0b73523ef71aЦqueued¤logs�§running¦output†¤bodyÚ!

Exercise 1.2 - Doubling COâ‚‚

To compute ECS, we doubled the COâ‚‚ in our atmosphere. This factor 2 is not entirely arbitrary: without substantial effort to reduce COâ‚‚ emissions, we are expected to at least double the COâ‚‚ in our atmosphere by 2100.

Right now, our CO₂ concentration is 415 ppm – 1.482 times the pre-industrial value of 280 ppm from 1850.

The COâ‚‚ concentrations in the future depend on human action. There are several models for future concentrations, which are formed by assuming different policy scenarios. A baseline model is RCP8.5 - a "worst-case" high-emissions scenario. In our notebook, this model is given as a function of $t$.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚAë뉰persist_js_state·has_pluto_hook_features§cell_idÙ$269200ec-259f-11eb-353b-0b73523ef71a¹depends_on_disabled_cells§runtimeÎB~’µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$8b06b944-268c-11eb-0bfc-8d4dd21e1f02Цqueued¤logs�§running¦output†¤bodyÙn

👉 Inside the plot cell, call the function step_model!.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<„8L°persist_js_state·has_pluto_hook_features§cell_idÙ$8b06b944-268c-11eb-0bfc-8d4dd21e1f02¹depends_on_disabled_cells§runtimeÎü[µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$6d2141d2-2b56-11eb-19ea-679a529dae3eЦqueued¤logs�§running¦output†¤body¥221.2¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚA‡äü°persist_js_state·has_pluto_hook_features§cell_idÙ$6d2141d2-2b56-11eb-19ea-679a529dae3e¹depends_on_disabled_cells§runtimeÍ7Lµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$5f82dec8-259e-11eb-2f4f-4d661f44ef41Цqueued¤logs�§running¦output†¤bodyÙ4

Hello world!

¤mime©text/html¬rootassignee¿observations_from_nonnegative_B²last_run_timestampËAÚAß¹²°persist_js_state·has_pluto_hook_features§cell_idÙ$5f82dec8-259e-11eb-2f4f-4d661f44ef41¹depends_on_disabled_cells§runtimeÎ#µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$372c1480-2433-11eb-3c4e-95a37d51835fЦqueued¤logs�§running¦output†¤body…¦prefix«Markdown.MD¨elements›’’Ù2

Fantastic!

©text/html’’Ù1

Splendid!

©text/html’’Ù.

Great!

©text/html’’Ù+

Yay �

©text/html’’Ù3

Great! 🎉

©text/html’’Ù2

Well done!

©text/html’’Ù3

Keep it up!

©text/html’’Ù1

Good job!

©text/html’ ’Ù0

Awesome!

©text/html’ ’ÙA

You got the right answer!

©text/html’ ’ÙJ

Let's move on to the next section.

©text/html¤type¥Array¬prefix_short ¨objectid°f40dd2abeed2ee95¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee¤yays²last_run_timestampËAÚGB;ë°persist_js_state·has_pluto_hook_features§cell_idÙ$372c1480-2433-11eb-3c4e-95a37d51835f¹depends_on_disabled_cells§runtimeΚZÛµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$f94e635e-252f-11eb-1a52-310b628bd9b2Цqueued¤logs�§running¦output†¤body²0.5011002200440088¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚE﫽°persist_js_state·has_pluto_hook_features§cell_idÙ$f94e635e-252f-11eb-1a52-310b628bd9b2¹depends_on_disabled_cells§runtimeÍl"µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$fa7e6f7e-2434-11eb-1e61-1b1858bb0988Цqueued¤logs�§running¦output†¤bodyÚ*‰

$B =$ -1.301

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚA݇°persist_js_state·has_pluto_hook_features§cell_idÙ$fa7e6f7e-2434-11eb-1e61-1b1858bb0988¹depends_on_disabled_cells§runtimeÎ,~µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$a86f13de-259d-11eb-3f46-1f6fb40020ceЦqueued¤logs�§running¦output†¤bodyÙ4

Hello world!

¤mime©text/html¬rootassignee¼observations_from_changing_B²last_run_timestampËAÚAßš‰°persist_js_state·has_pluto_hook_features§cell_idÙ$a86f13de-259d-11eb-3f46-1f6fb40020ce¹depends_on_disabled_cells§runtime·ǵpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$930d7154-1fbf-11eb-1c3a-b1970d291811Цqueued¤logs�§running¦output†¤body¶Main.workspace#3.Model¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚA}®û°persist_js_state·has_pluto_hook_features§cell_idÙ$930d7154-1fbf-11eb-1c3a-b1970d291811¹depends_on_disabled_cells§runtimeÎ ¬i$µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$50ea30ba-25a1-11eb-05d8-b3d579f85652Цqueued¤logs�§running¦output†¤body§missing¤mimeªtext/plain¬rootassignee¸expected_double_CO2_year²last_run_timestampËAÚAùe�°persist_js_state·has_pluto_hook_features§cell_idÙ$50ea30ba-25a1-11eb-05d8-b3d579f85652¹depends_on_disabled_cells§runtimeÍA µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$19957754-252d-11eb-1e0a-930b5208f5acЦqueued¤logs�§running¦output†¤bodyƒ¨elements’’’¥280.0ªtext/plain’’¥280.0ªtext/plain¤type¥Tuple¨objectid¯8090ba310d99306¤mimeÙ!application/vnd.pluto.tree+object¬rootassigneeÀ²last_run_timestampËAÚFvŸ °persist_js_state·has_pluto_hook_features§cell_idÙ$19957754-252d-11eb-1e0a-930b5208f5ac¹depends_on_disabled_cells§runtimeÎ6[�µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$d6d1b312-2543-11eb-1cb2-e5b801686ffbЦqueued¤logs�§running¦output†¤bodyÚ&

Below we have an empty diagram, which is already set up with a COâ‚‚ vs $T$ diagram, with a logirthmic horizontal axis. Now it's your turn! We have written some pointers below to help you, but feel free to do it your own way.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<ƒ†ô°persist_js_state·has_pluto_hook_features§cell_idÙ$d6d1b312-2543-11eb-1cb2-e5b801686ffb¹depends_on_disabled_cells§runtimeÎf9µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$02232964-2603-11eb-2c4c-c7b7e5fed7d1Цqueued¤logs�§running¦output†¤body£0.4¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚAüb°persist_js_state·has_pluto_hook_features§cell_idÙ$02232964-2603-11eb-2c4c-c7b7e5fed7d1¹depends_on_disabled_cells§runtimeÍ8µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$40f1e7d8-252d-11eb-0549-49ca4e806e16Цqueued¤logs�§running¦output†¤bodyÚ {1850¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚFef{°persist_js_state·has_pluto_hook_features§cell_idÙ$40f1e7d8-252d-11eb-0549-49ca4e806e16¹depends_on_disabled_cells§runtimeÎ66lµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$253f4da0-2433-11eb-1e48-4906059607d3Цqueued¤logs�§running¦output†¤bodyÙT

Let's create a package environment:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<€;¬°persist_js_state·has_pluto_hook_features§cell_idÙ$253f4da0-2433-11eb-1e48-4906059607d3¹depends_on_disabled_cells§runtimeÎ�Nµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$d7801e88-2530-11eb-0b93-6f1c78d00eeaЦqueued¤logs�§running¦output†¤bodyÙ#α (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚFû®â°persist_js_state·has_pluto_hook_features§cell_idÙ$d7801e88-2530-11eb-0b93-6f1c78d00eea¹depends_on_disabled_cells§runtimeÎÒµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$e411a3bc-2538-11eb-3492-bfdd42b1445dЦqueued¤logs�§running¦output†¤bodyÙ,step_model! (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚF—Ùo°persist_js_state·has_pluto_hook_features§cell_idÙ$e411a3bc-2538-11eb-3492-bfdd42b1445d¹depends_on_disabled_cells§runtimeÎZqµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$232b9bec-2544-11eb-0401-97a60bb172fcЦqueued¤logs�§running¦output†¤bodyÚF

Hint

Start by writing a function equilibrium_temperature(CO2) which creates a new EBM at the Snowball Earth temperature T = -48 and returns the final temperature for a given CO2 level.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚGÁ°persist_js_state·has_pluto_hook_features§cell_idÙ$232b9bec-2544-11eb-0401-97a60bb172fc¹depends_on_disabled_cells§runtime懵published_object_keys�¸depends_on_skipped_cells§erroredÂÙ$736ed1b6-1fc2-11eb-359e-a1be0a188670Цqueued¤logs�§running¦output†¤body…¦prefix§Float64¨elementsÜ’’¨-1.66248ªtext/plain’’©-0.680517ªtext/plain’’¨-1.45014ªtext/plain’’©-0.782607ªtext/plain’’©-0.793282ªtext/plain’’¨-1.55874ªtext/plain’’¨-2.26005ªtext/plain’’¨-1.07598ªtext/plain’ ’¨-1.20939ªtext/plain’ ’§-1.4583ªtext/plain’ ’¨-2.16568ªtext/plain’ ’¨-1.41794ªtext/plain’ ’¨-1.78338ªtext/plain’’¨-1.40214ªtext/plain’’¨-1.25901ªtext/plain’’©-0.750134ªtext/plain’’¨-1.62329ªtext/plain’’¨-2.20928ªtext/plain’’§-1.3201ªtext/plain’’¨-0.52878ªtext/plain¤more’Í~’¨-1.26784ªtext/plain’Í’¨-1.60451ªtext/plain’Í€’¨-1.18307ªtext/plain’Í�’¨-1.03827ªtext/plain’Í‚’¨-1.16284ªtext/plain’̓’¨-1.84149ªtext/plain’Í„’¨-1.33446ªtext/plain’Í…’¨-1.47511ªtext/plain’͆’¨-1.62268ªtext/plain’͇’¨-1.22538ªtext/plain¤type¥Array¬prefix_short ¨objectid°bc26226b47546061¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee©B_samples²last_run_timestampËAÚE¢ °persist_js_state·has_pluto_hook_features§cell_idÙ$736ed1b6-1fc2-11eb-359e-a1be0a188670¹depends_on_disabled_cells§runtimeÍîaµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$440271b6-25e8-11eb-26ce-1b80aa176acaЦqueued¤logs�§running¦output†¤bodyÙË

👉 Does accounting for uncertainty in feedbacks make our expectation of global warming better (less implied warming) or worse (more implied warming)?

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<‚ þ°persist_js_state·has_pluto_hook_features§cell_idÙ$440271b6-25e8-11eb-26ce-1b80aa176aca¹depends_on_disabled_cells§runtimeÎçеpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$36ea4410-2433-11eb-1d98-ab4016245d95Цqueued¤logs�§running¦output†¤bodyÙn

Function library

Just some helper functions used in the notebook.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<„Ǭ°persist_js_state·has_pluto_hook_features§cell_idÙ$36ea4410-2433-11eb-1d98-ab4016245d95¹depends_on_disabled_cells§runtimeÎÁšµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$374522c4-2433-11eb-3da3-17419949defcЦqueued¤logs�§running¦output†¤bodyÙ,not_defined (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚGX%À°persist_js_state·has_pluto_hook_features§cell_idÙ$374522c4-2433-11eb-3da3-17419949defc¹depends_on_disabled_cells§runtimeÎ H…µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$3d66bd30-259d-11eb-2694-471fb3a4a7beЦqueued¤logs�§running¦output†¤bodyÙy

👉 What happens when $B$ is greater than or equal to zero?

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<€ü °persist_js_state·has_pluto_hook_features§cell_idÙ$3d66bd30-259d-11eb-2694-471fb3a4a7be¹depends_on_disabled_cells§runtimeÎÖHµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$bade1372-25a1-11eb-35f4-4b43d4e8d156Цqueued¤logs�§running¦output†¤bodyÚË

Exercise 1.3 - Uncertainty in B

The climate feedback parameter $B$ is not something that we can control– it is an emergent property of the global climate system. Unfortunately, $B$ is also difficult to quantify empirically (the relevant processes are difficult or impossible to observe directly), so there remains uncertainty as to its exact value.

A value of $B$ close to zero means that an increase in COâ‚‚ concentrations will have a larger impact on global warming, and that more action is needed to stay below a maximum temperature. In answering such policy-related question, we need to take the uncertainty in $B$ into account. In this exercise, we will do so using a Monte Carlo simulation: we generate a sample of values for $B$, and use these values in our analysis.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<�V°persist_js_state·has_pluto_hook_features§cell_idÙ$bade1372-25a1-11eb-35f4-4b43d4e8d156¹depends_on_disabled_cells§runtimeÎÇ™µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$87e68a4a-2433-11eb-3e9d-21675850ed71Цqueued¤logs�§running¦output†¤bodyÙÝ ¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<€]ê°persist_js_state·has_pluto_hook_features§cell_idÙ$87e68a4a-2433-11eb-3e9d-21675850ed71¹depends_on_disabled_cells§runtimeÎÔ�µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$7f961bc0-1fc5-11eb-1f18-612aeff0d8dfЦqueued¤logs�§running¦output†¤bodyÚe

The plot below provides an example of an "abrupt 2xCOâ‚‚" experiment, a classic experimental treatment method in climate modelling which is used in practice to estimate ECS for a particular model. (Note: in complicated climate models the values of the parameters $a$ and $B$ are not specified a priori, but emerge as outputs of the simulation.)

The simulation begins at the preindustrial equilibrium, i.e. a temperature $T_{0} = 14$°C is in balance with the pre-industrial CO₂ concentration of 280 ppm until CO₂ is abruptly doubled from 280 ppm to 560 ppm. The climate responds by warming rapidly, and after a few hundred years approaches the equilibrium climate sensitivity value, by definition.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ<€¶°persist_js_state·has_pluto_hook_features§cell_idÙ$7f961bc0-1fc5-11eb-1f18-612aeff0d8df¹depends_on_disabled_cells§runtimeÎ~lµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$3d72ab3a-2689-11eb-360d-9b3d829b78a9Цqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ<�ÅH°persist_js_state·has_pluto_hook_features§cell_idÙ$3d72ab3a-2689-11eb-360d-9b3d829b78a9¹depends_on_disabled_cells§runtimeÍ4£µpublished_object_keys�¸depends_on_skipped_cells§errored±cell_dependenciesÞkÙ$cf8dca6c-1fc8-11eb-1f89-099e6ba53c22„´precedence_heuristic §cell_idÙ$cf8dca6c-1fc8-11eb-1f89-099e6ba53c22´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$f2e55166-25ff-11eb-0297-796e97c62b07„´precedence_heuristic §cell_idÙ$f2e55166-25ff-11eb-0297-796e97c62b07´downstream_cells_map€²upstream_cells_map€Ù$36f8c1e8-2433-11eb-1f6e-69dc552a4a07„´precedence_heuristic §cell_idÙ$36f8c1e8-2433-11eb-1f6e-69dc552a4a07´downstream_cells_map�¤hint”Ù$51e2e742-25a1-11eb-2511-ab3434eacc3eÙ$53c2eaf6-268b-11eb-0899-b91c03713da4Ù$cb15cd88-25ed-11eb-2be4-f31500a726c8Ù$232b9bec-2544-11eb-0401-97a60bb172fc²upstream_cells_mapƒ³Markdown.Admonition�«Markdown.MD�¨Markdown�Ù$3a35598a-2527-11eb-37e5-3b3e4c63c4f7„´precedence_heuristic §cell_idÙ$3a35598a-2527-11eb-37e5-3b3e4c63c4f7´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$9eb07a6e-2687-11eb-0de3-7bc6aa0eefb0„´precedence_heuristic §cell_idÙ$9eb07a6e-2687-11eb-0de3-7bc6aa0eefb0´downstream_cells_map�´co2_to_melt_snowball�²upstream_cells_map�§missing�Ù$2bbf5a70-2676-11eb-1085-7130d4a30443„´precedence_heuristic §cell_idÙ$2bbf5a70-2676-11eb-1085-7130d4a30443´downstream_cells_map�¦CO2max’Ù$378aed18-252b-11eb-0b37-a3b511af2cb5Ù$3c7d33da-253d-11eb-0c5a-9b0d524c42f8²upstream_cells_map€Ù$371352ec-2433-11eb-153d-379afa8ed15e„´precedence_heuristic §cell_idÙ$371352ec-2433-11eb-153d-379afa8ed15e´downstream_cells_map�­still_missing�²upstream_cells_map…§@md_str�³Markdown.Admonition�«Markdown.MD�¨Markdown�¨getindex�Ù$09901de6-2672-11eb-3d50-05b176b729e7„´precedence_heuristic §cell_idÙ$09901de6-2672-11eb-3d50-05b176b729e7´downstream_cells_map€²upstream_cells_map‚´temperature_response‘Ù$f688f9f2-2671-11eb-1d71-a57c9817433f¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811Ù$607058ec-253c-11eb-0fb6-add8cfb73a4f„´precedence_heuristic §cell_idÙ$607058ec-253c-11eb-0fb6-add8cfb73a4f´downstream_cells_map�¯Model.timestep!�²upstream_cells_map‡§append!�®Model.tendency�¡+�¢Î±‘Ù$d7801e88-2530-11eb-0b93-6f1c78d00eea¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811¡*�£end�Ù$372002e4-2433-11eb-0b25-39ce1b1dd3d1„´precedence_heuristic §cell_idÙ$372002e4-2433-11eb-0b25-39ce1b1dd3d1´downstream_cells_map�¬keep_working�²upstream_cells_map…§@md_str�³Markdown.Admonition�«Markdown.MD�¨Markdown�¨getindex�Ù$736515ba-2685-11eb-38cb-65bfcf8d1b8d„´precedence_heuristic §cell_idÙ$736515ba-2685-11eb-38cb-65bfcf8d1b8d´downstream_cells_map€²upstream_cells_map€Ù$5b5f25f0-266c-11eb-25d4-17e411c850c9„´precedence_heuristic §cell_idÙ$5b5f25f0-266c-11eb-25d4-17e411c850c9´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$049a866e-2672-11eb-29f7-bfea7ad8f572„´precedence_heuristic §cell_idÙ$049a866e-2672-11eb-29f7-bfea7ad8f572´downstream_cells_map€²upstream_cells_map�´temperature_response‘Ù$f688f9f2-2671-11eb-1d71-a57c9817433fÙ$49cb5174-1fc3-11eb-3670-c3868c9b0255„´precedence_heuristic §cell_idÙ$49cb5174-1fc3-11eb-3670-c3868c9b0255´downstream_cells_map€²upstream_cells_mapƒ©B_samples‘Ù$736ed1b6-1fc2-11eb-359e-a1be0a188670©histogram�§nothing�Ù$09ce27ca-268c-11eb-0cdd-c9801db876f8„´precedence_heuristic §cell_idÙ$09ce27ca-268c-11eb-0cdd-c9801db876f8´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$53c2eaf6-268b-11eb-0899-b91c03713da4„´precedence_heuristic §cell_idÙ$53c2eaf6-268b-11eb-0899-b91c03713da4´downstream_cells_map€²upstream_cells_mapƒ§@md_str�¤hint‘Ù$36f8c1e8-2433-11eb-1f6e-69dc552a4a07¨getindex�Ù$9c32db5c-1fc9-11eb-029a-d5d554de1067„´precedence_heuristic §cell_idÙ$9c32db5c-1fc9-11eb-029a-d5d554de1067´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$37552044-2433-11eb-1984-d16e355a7c10„´precedence_heuristic §cell_idÙ$37552044-2433-11eb-1984-d16e355a7c10´downstream_cells_map�¤TODO�²upstream_cells_mapƒ¤Base�®Base.Docs.HTML�©@html_str�Ù$16348b6a-1fc2-11eb-0b9c-65df528db2a1„´precedence_heuristic §cell_idÙ$16348b6a-1fc2-11eb-0b9c-65df528db2a1´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$21524c08-2433-11eb-0c55-47b1bdc9e459„´precedence_heuristic §cell_idÙ$21524c08-2433-11eb-0c55-47b1bdc9e459´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$1f148d9a-1fc8-11eb-158e-9d784e390b24„´precedence_heuristic §cell_idÙ$1f148d9a-1fc8-11eb-158e-9d784e390b24´downstream_cells_map€²upstream_cells_map‚©histogram�«ECS_samples‘Ù$1843dae6-2689-11eb-2aaf-036eb2f9341dÙ$11096250-2544-11eb-057b-d7112f20b05c„´precedence_heuristic §cell_idÙ$11096250-2544-11eb-057b-d7112f20b05c´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$7d815988-1fc7-11eb-322a-4509e7128ce3„´precedence_heuristic §cell_idÙ$7d815988-1fc7-11eb-322a-4509e7128ce3´downstream_cells_map€²upstream_cells_mapƒ§@md_str�»reveal_nonnegative_B_answer‘Ù$56b68356-2601-11eb-39a9-5f4b8e580b87¨getindex�Ù$1e06178a-1fbf-11eb-32b3-61769a79b7c0„´precedence_heuristic§cell_idÙ$1e06178a-1fbf-11eb-32b3-61769a79b7c0´downstream_cells_map†£Pkg‘Ù$1e06178a-1fbf-11eb-32b3-61769a79b7c0­Distributions�¥Plots�§PlutoUI�¦Random‘Ù$1e06178a-1fbf-11eb-32b3-61769a79b7c0¬LaTeXStrings�²upstream_cells_mapˆ§@md_str�§Pkg.add�¬Random.seed!�£Pkg‘Ù$1e06178a-1fbf-11eb-32b3-61769a79b7c0¦Random‘Ù$1e06178a-1fbf-11eb-32b3-61769a79b7c0¬Pkg.activate�©mktempdir�¨getindex�Ù$169727be-2433-11eb-07ae-ab7976b5be90„´precedence_heuristic §cell_idÙ$169727be-2433-11eb-07ae-ab7976b5be90´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$3e310cf8-25ec-11eb-07da-cb4a2c71ae34„´precedence_heuristic §cell_idÙ$3e310cf8-25ec-11eb-07da-cb4a2c71ae34´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$298deff4-2676-11eb-2595-e7e22f613ea1„´precedence_heuristic §cell_idÙ$298deff4-2676-11eb-2595-e7e22f613ea1´downstream_cells_map�¦CO2min’Ù$378aed18-252b-11eb-0b37-a3b511af2cb5Ù$3c7d33da-253d-11eb-0c5a-9b0d524c42f8²upstream_cells_map€Ù$f688f9f2-2671-11eb-1d71-a57c9817433f„´precedence_heuristic §cell_idÙ$f688f9f2-2671-11eb-1d71-a57c9817433f´downstream_cells_map�´temperature_response“Ù$049a866e-2672-11eb-29f7-bfea7ad8f572Ù$09901de6-2672-11eb-3d50-05b176b729e7Ù$aea0d0b4-2672-11eb-231e-395c863827d3²upstream_cells_mapƒ§missing�§Float64�¨Function�Ù$51e2e742-25a1-11eb-2511-ab3434eacc3e„´precedence_heuristic §cell_idÙ$51e2e742-25a1-11eb-2511-ab3434eacc3e´downstream_cells_map€²upstream_cells_mapƒ§@md_str�¤hint‘Ù$36f8c1e8-2433-11eb-1f6e-69dc552a4a07¨getindex�Ù$746aa5bc-266c-11eb-14c9-63ccc313f5de„´precedence_heuristic §cell_idÙ$746aa5bc-266c-11eb-14c9-63ccc313f5de´downstream_cells_map�©empty_ebm�²upstream_cells_map‚©Model.EBM�¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811Ù$68b2a560-2536-11eb-0cc4-27793b4d6a70„´precedence_heuristic §cell_idÙ$68b2a560-2536-11eb-0cc4-27793b4d6a70´downstream_cells_map�³add_cold_hot_areas!‘Ù$378aed18-252b-11eb-0b37-a3b511af2cb5²upstream_cells_map†©annotate!�¥plot!�¡+�¤text�¥xlims�§nothing�Ù$23335418-2433-11eb-05e4-2b35dc6cca0e„´precedence_heuristic §cell_idÙ$23335418-2433-11eb-05e4-2b35dc6cca0e´downstream_cells_map�§student’Ù$18be4f7c-2433-11eb-33cb-8d90ca6f124cÙ$36e2dfea-2433-11eb-1c90-bb93ab25b33c²upstream_cells_map€Ù$25f92dec-1fc4-11eb-055d-f34deea81d0e„´precedence_heuristic §cell_idÙ$25f92dec-1fc4-11eb-055d-f34deea81d0e´downstream_cells_map€²upstream_cells_mapÞ£ECS‘Ù$c4398f9c-1fc4-11eb-0bbb-37f066c6027d¦isless�¢|>�¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811ªModel.run!�©Model.EBM�£end�¨B_slider‘Ù$fa7e6f7e-2434-11eb-1e61-1b1858bb0988¡<�¦as_svg�¡-�¨isfinite�¤plot�¡/�¢>=�¡+�¥plot!�¡*�Ù$aea0d0b4-2672-11eb-231e-395c863827d3„´precedence_heuristic §cell_idÙ$aea0d0b4-2672-11eb-231e-395c863827d3´downstream_cells_map€²upstream_cells_map‚´temperature_response‘Ù$f688f9f2-2671-11eb-1d71-a57c9817433f¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811Ù$18be4f7c-2433-11eb-33cb-8d90ca6f124c„´precedence_heuristic §cell_idÙ$18be4f7c-2433-11eb-33cb-8d90ca6f124c´downstream_cells_map€²upstream_cells_mapƒ§@md_str�§student‘Ù$23335418-2433-11eb-05e4-2b35dc6cca0e¨getindex�Ù$5041cdee-2527-11eb-154f-0b0c68e11fe3„´precedence_heuristic §cell_idÙ$5041cdee-2527-11eb-154f-0b0c68e11fe3´downstream_cells_map�®lines_i_edited�²upstream_cells_map‚§@md_str�¨getindex�Ù$378aed18-252b-11eb-0b37-a3b511af2cb5„´precedence_heuristic §cell_idÙ$378aed18-252b-11eb-0b37-a3b511af2cb5´downstream_cells_map€²upstream_cells_mapŽ«step_model!‘Ù$e411a3bc-2538-11eb-3492-bfdd42b1445d¦CO2min‘Ù$298deff4-2676-11eb-2595-e7e22f613ea1¦CO2max‘Ù$2bbf5a70-2676-11eb-1085-7130d4a30443¢|>�£ebm‘Ù$06d28052-2531-11eb-39e2-e9613ab0401c§ebm.CO2�£CO2‘Ù$35f87c2e-253d-11eb-0d79-61d89c1d9b5e£end�§nothing�¦as_svg�³add_cold_hot_areas!‘Ù$68b2a560-2536-11eb-0cc4-27793b4d6a70¤plot�µadd_reference_points!‘Ù$0e19f82e-2685-11eb-2e99-0d094c1aa520¥plot!�Ù$b6d7a362-1fc8-11eb-03bc-89464b55c6fc„´precedence_heuristic §cell_idÙ$b6d7a362-1fc8-11eb-03bc-89464b55c6fc´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$cf276892-25e7-11eb-38f0-03f75c90dd9e„´precedence_heuristic §cell_idÙ$cf276892-25e7-11eb-38f0-03f75c90dd9e´downstream_cells_map�Ù(observations_from_the_order_of_averaging�²upstream_cells_map‚§@md_str�¨getindex�Ù$cb15cd88-25ed-11eb-2be4-f31500a726c8„´precedence_heuristic §cell_idÙ$cb15cd88-25ed-11eb-2be4-f31500a726c8´downstream_cells_map€²upstream_cells_mapƒ§@md_str�¤hint‘Ù$36f8c1e8-2433-11eb-1f6e-69dc552a4a07¨getindex�Ù$37061f1e-2433-11eb-3879-2d31dc70a771„´precedence_heuristic §cell_idÙ$37061f1e-2433-11eb-3879-2d31dc70a771´downstream_cells_map�¦almost�²upstream_cells_mapƒ³Markdown.Admonition�«Markdown.MD�¨Markdown�Ù$3c7d33da-253d-11eb-0c5a-9b0d524c42f8„´precedence_heuristic §cell_idÙ$3c7d33da-253d-11eb-0c5a-9b0d524c42f8´downstream_cells_map�§log_CO2‘Ù$35f87c2e-253d-11eb-0d79-61d89c1d9b5e²upstream_cells_map�¤Core�¦CO2min‘Ù$298deff4-2676-11eb-2595-e7e22f613ea1¡:�¦CO2max‘Ù$2bbf5a70-2676-11eb-1085-7130d4a30443¨Base.get�¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811¥@bind�¦Slider�¤Base�«PlutoRunner�·PlutoRunner.create_bond�¯Core.applicable�¥log10�Ù$9c1f73e0-268a-11eb-2bf1-216a5d869568„´precedence_heuristic §cell_idÙ$9c1f73e0-268a-11eb-2bf1-216a5d869568´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$56b68356-2601-11eb-39a9-5f4b8e580b87„´precedence_heuristic §cell_idÙ$56b68356-2601-11eb-39a9-5f4b8e580b87´downstream_cells_map�»reveal_nonnegative_B_answer‘Ù$7d815988-1fc7-11eb-322a-4509e7128ce3²upstream_cells_mapФCore�§@md_str�¤Base�·PlutoRunner.create_bond�«PlutoRunner�¨CheckBox�¯Core.applicable�¥@bind�¨Base.get�¨getindex�Ù$12cbbab0-2671-11eb-2b1f-038c206e84ce„´precedence_heuristic §cell_idÙ$12cbbab0-2671-11eb-2b1f-038c206e84ce´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$9596c2dc-2671-11eb-36b9-c1af7e5f1089„´precedence_heuristic §cell_idÙ$9596c2dc-2671-11eb-36b9-c1af7e5f1089´downstream_cells_map�µsimulated_rcp85_model�²upstream_cells_map�§missing�Ù$f94a1d56-2671-11eb-2cdc-810a9c7a8a5f„´precedence_heuristic §cell_idÙ$f94a1d56-2671-11eb-2cdc-810a9c7a8a5f´downstream_cells_map€²upstream_cells_map€Ù$4b091fac-2672-11eb-0db8-75457788d85e„´precedence_heuristic §cell_idÙ$4b091fac-2672-11eb-0db8-75457788d85e´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$1eabe908-268b-11eb-329b-b35160ec951e„´precedence_heuristic §cell_idÙ$1eabe908-268b-11eb-329b-b35160ec951e´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$d44daea2-252f-11eb-364f-377ae504dc04„´precedence_heuristic §cell_idÙ$d44daea2-252f-11eb-364f-377ae504dc04´downstream_cells_map�«ecs_of_mean‘Ù$f94e635e-252f-11eb-1a52-310b628bd9b2²upstream_cells_mapƒ©B_samples‘Ù$736ed1b6-1fc2-11eb-359e-a1be0a188670£ECS‘Ù$c4398f9c-1fc4-11eb-0bbb-37f066c6027d¤mean�Ù$971f401e-266c-11eb-3104-171ae299ef70„´precedence_heuristic §cell_idÙ$971f401e-266c-11eb-3104-171ae299ef70´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$de95efae-2675-11eb-0909-73afcd68fd42„´precedence_heuristic §cell_idÙ$de95efae-2675-11eb-0909-73afcd68fd42´downstream_cells_map�¤Tneo’Ù$06d28052-2531-11eb-39e2-e9613ab0401cÙ$232b9bec-2544-11eb-0401-97a60bb172fc²upstream_cells_map€Ù$23e24d88-2530-11eb-26ef-c5e4e8b4f276„´precedence_heuristic §cell_idÙ$23e24d88-2530-11eb-26ef-c5e4e8b4f276´downstream_cells_map€²upstream_cells_mapˆ¦length�¡<�£sum�«mean_of_ecs‘Ù$e27b2cd4-252f-11eb-20ef-0354db6220c2¡/�¡>�¦isless�«ECS_samples‘Ù$1843dae6-2689-11eb-2aaf-036eb2f9341dÙ$2dfab366-25a1-11eb-15c9-b3dd9cd6b96c„´precedence_heuristic §cell_idÙ$2dfab366-25a1-11eb-15c9-b3dd9cd6b96c´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$1ea81214-1fca-11eb-2442-7b0b448b49d6„´precedence_heuristic §cell_idÙ$1ea81214-1fca-11eb-2442-7b0b448b49d6´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$a919d584-2670-11eb-1cf9-2327c8135d6d„´precedence_heuristic §cell_idÙ$a919d584-2670-11eb-1cf9-2327c8135d6d´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$06c5139e-252d-11eb-2645-8b324b24c405„´precedence_heuristic §cell_idÙ$06c5139e-252d-11eb-2645-8b324b24c405´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$b9f882d8-266b-11eb-2998-75d6539088c7„´precedence_heuristic §cell_idÙ$b9f882d8-266b-11eb-2998-75d6539088c7´downstream_cells_map€²upstream_cells_map€Ù$1843dae6-2689-11eb-2aaf-036eb2f9341d„´precedence_heuristic §cell_idÙ$1843dae6-2689-11eb-2aaf-036eb2f9341d´downstream_cells_map�«ECS_samples“Ù$1f148d9a-1fc8-11eb-158e-9d784e390b24Ù$f94e635e-252f-11eb-1a52-310b628bd9b2Ù$23e24d88-2530-11eb-26ef-c5e4e8b4f276²upstream_cells_map‚©B_samples‘Ù$736ed1b6-1fc2-11eb-359e-a1be0a188670£ECS‘Ù$c4398f9c-1fc4-11eb-0bbb-37f066c6027dÙ$35f87c2e-253d-11eb-0d79-61d89c1d9b5e„´precedence_heuristic §cell_idÙ$35f87c2e-253d-11eb-0d79-61d89c1d9b5e´downstream_cells_map�£CO2‘Ù$378aed18-252b-11eb-0b37-a3b511af2cb5²upstream_cells_map‚§log_CO2‘Ù$3c7d33da-253d-11eb-0c5a-9b0d524c42f8¡^�Ù$e296c6e8-259c-11eb-1385-53f757f4d585„´precedence_heuristic §cell_idÙ$e296c6e8-259c-11eb-1385-53f757f4d585´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$06d28052-2531-11eb-39e2-e9613ab0401c„´precedence_heuristic §cell_idÙ$06d28052-2531-11eb-39e2-e9613ab0401c´downstream_cells_map�£ebm‘Ù$378aed18-252b-11eb-0b37-a3b511af2cb5²upstream_cells_mapƒ¤Tneo‘Ù$de95efae-2675-11eb-0909-73afcd68fd42©Model.EBM�¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811Ù$e10a9b70-25a0-11eb-2aed-17ed8221c208„´precedence_heuristic §cell_idÙ$e10a9b70-25a0-11eb-2aed-17ed8221c208´downstream_cells_map€²upstream_cells_map„¯Model.CO2_RCP85�¤plot�¡t‘Ù$ee1be5dc-252b-11eb-0865-291aa823b9e9¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811Ù$36e2dfea-2433-11eb-1c90-bb93ab25b33c„´precedence_heuristic §cell_idÙ$36e2dfea-2433-11eb-1c90-bb93ab25b33c´downstream_cells_map€²upstream_cells_map„§@md_str�§student‘Ù$23335418-2433-11eb-05e4-2b35dc6cca0e¢==�¨getindex�Ù$1312525c-1fc0-11eb-2756-5bc3101d2260„´precedence_heuristic §cell_idÙ$1312525c-1fc0-11eb-2756-5bc3101d2260´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$0e19f82e-2685-11eb-2e99-0d094c1aa520„´precedence_heuristic §cell_idÙ$0e19f82e-2685-11eb-2e99-0d094c1aa520´downstream_cells_map�µadd_reference_points!‘Ù$378aed18-252b-11eb-0b37-a3b511af2cb5²upstream_cells_map‚¥plot!�¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811Ù$a0ef04b0-25e9-11eb-1110-cde93601f712„´precedence_heuristic §cell_idÙ$a0ef04b0-25e9-11eb-1110-cde93601f712´downstream_cells_map€²upstream_cells_mapƒ¤Base�®Base.Docs.HTML�©@html_str�Ù$3f823490-266d-11eb-1ba4-d5a23975c335„´precedence_heuristic §cell_idÙ$3f823490-266d-11eb-1ba4-d5a23975c335´downstream_cells_map€²upstream_cells_mapƒ¤Base�®Base.Docs.HTML�©@html_str�Ù$fe3304f8-2668-11eb-066d-fdacadce5a19„´precedence_heuristic §cell_idÙ$fe3304f8-2668-11eb-066d-fdacadce5a19´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$4c9173ac-2685-11eb-2129-99071821ebeb„´precedence_heuristic §cell_idÙ$4c9173ac-2685-11eb-2129-99071821ebeb´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$3737be8e-2433-11eb-2049-2d6d8a5e4753„´precedence_heuristic §cell_idÙ$3737be8e-2433-11eb-2049-2d6d8a5e4753´downstream_cells_map�§correct�²upstream_cells_map…³Markdown.Admonition�¤yays‘Ù$372c1480-2433-11eb-3c4e-95a37d51835f«Markdown.MD�¨Markdown�¤rand�Ù$bfb07a0a-2670-11eb-3938-772499c637b1„´precedence_heuristic §cell_idÙ$bfb07a0a-2670-11eb-3938-772499c637b1´downstream_cells_map�¯simulated_model�²upstream_cells_mapƒ©Model.EBM�¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811ªModel.run!�Ù$ee1be5dc-252b-11eb-0865-291aa823b9e9„´precedence_heuristic §cell_idÙ$ee1be5dc-252b-11eb-0865-291aa823b9e9´downstream_cells_map�¡t’Ù$e10a9b70-25a0-11eb-2aed-17ed8221c208Ù$40f1e7d8-252d-11eb-0549-49ca4e806e16²upstream_cells_map�¡:�Ù$e27b2cd4-252f-11eb-20ef-0354db6220c2„´precedence_heuristic §cell_idÙ$e27b2cd4-252f-11eb-20ef-0354db6220c2´downstream_cells_map�«mean_of_ecs‘Ù$23e24d88-2530-11eb-26ef-c5e4e8b4f276²upstream_cells_mapƒ©B_samples‘Ù$736ed1b6-1fc2-11eb-359e-a1be0a188670£ECS‘Ù$c4398f9c-1fc4-11eb-0bbb-37f066c6027d¤mean�Ù$c4398f9c-1fc4-11eb-0bbb-37f066c6027d„´precedence_heuristic §cell_idÙ$c4398f9c-1fc4-11eb-0bbb-37f066c6027d´downstream_cells_map�£ECS”Ù$25f92dec-1fc4-11eb-055d-f34deea81d0eÙ$1843dae6-2689-11eb-2aaf-036eb2f9341dÙ$d44daea2-252f-11eb-364f-377ae504dc04Ù$e27b2cd4-252f-11eb-20ef-0354db6220c2²upstream_cells_map†¡-�£log�£BÌ…‘Ù$02232964-2603-11eb-2c4c-c7b7e5fed7d1¡/�¡*�¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811Ù$f3abc83c-1fc7-11eb-1aa8-01ce67c8bdde„´precedence_heuristic §cell_idÙ$f3abc83c-1fc7-11eb-1aa8-01ce67c8bdde´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$c78e02b4-268a-11eb-0af7-f7c7620fcc34„´precedence_heuristic §cell_idÙ$c78e02b4-268a-11eb-0af7-f7c7620fcc34´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$9cdc5f84-2671-11eb-3c78-e3495bc64d33„´precedence_heuristic §cell_idÙ$9cdc5f84-2671-11eb-3c78-e3495bc64d33´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$3cbc95ba-2685-11eb-3810-3bf38aa33231„´precedence_heuristic §cell_idÙ$3cbc95ba-2685-11eb-3810-3bf38aa33231´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$aed8f00e-266b-11eb-156d-8bb09de0dc2b„´precedence_heuristic §cell_idÙ$aed8f00e-266b-11eb-156d-8bb09de0dc2b´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$269200ec-259f-11eb-353b-0b73523ef71a„´precedence_heuristic §cell_idÙ$269200ec-259f-11eb-353b-0b73523ef71a´downstream_cells_map€²upstream_cells_map„§@md_str�¡/�¥round�¨getindex�Ù$8b06b944-268c-11eb-0bfc-8d4dd21e1f02„´precedence_heuristic §cell_idÙ$8b06b944-268c-11eb-0bfc-8d4dd21e1f02´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$6d2141d2-2b56-11eb-19ea-679a529dae3e„´precedence_heuristic §cell_idÙ$6d2141d2-2b56-11eb-19ea-679a529dae3e´downstream_cells_map€²upstream_cells_map�¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811Ù$5f82dec8-259e-11eb-2f4f-4d661f44ef41„´precedence_heuristic §cell_idÙ$5f82dec8-259e-11eb-2f4f-4d661f44ef41´downstream_cells_map�¿observations_from_nonnegative_B�²upstream_cells_map‚§@md_str�¨getindex�Ù$372c1480-2433-11eb-3c4e-95a37d51835f„´precedence_heuristic §cell_idÙ$372c1480-2433-11eb-3c4e-95a37d51835f´downstream_cells_map�¤yays‘Ù$3737be8e-2433-11eb-2049-2d6d8a5e4753²upstream_cells_map‚§@md_str�¨getindex�Ù$f94e635e-252f-11eb-1a52-310b628bd9b2„´precedence_heuristic §cell_idÙ$f94e635e-252f-11eb-1a52-310b628bd9b2´downstream_cells_map€²upstream_cells_mapˆ¦length�¡<�£sum�¡>�¡/�¦isless�«ecs_of_mean‘Ù$d44daea2-252f-11eb-364f-377ae504dc04«ECS_samples‘Ù$1843dae6-2689-11eb-2aaf-036eb2f9341dÙ$fa7e6f7e-2434-11eb-1e61-1b1858bb0988„´precedence_heuristic §cell_idÙ$fa7e6f7e-2434-11eb-1e61-1b1858bb0988´downstream_cells_map�¨B_slider‘Ù$25f92dec-1fc4-11eb-055d-f34deea81d0e²upstream_cells_map‹§@md_str�¤Core�¡:�¨Base.get�¥@bind�¦Slider�¤Base�«PlutoRunner�·PlutoRunner.create_bond�¯Core.applicable�¨getindex�Ù$a86f13de-259d-11eb-3f46-1f6fb40020ce„´precedence_heuristic §cell_idÙ$a86f13de-259d-11eb-3f46-1f6fb40020ce´downstream_cells_map�¼observations_from_changing_B�²upstream_cells_map‚§@md_str�¨getindex�Ù$930d7154-1fbf-11eb-1c3a-b1970d291811„´precedence_heuristic §cell_idÙ$930d7154-1fbf-11eb-1c3a-b1970d291811´downstream_cells_map�¥ModelŸÙ$6d2141d2-2b56-11eb-19ea-679a529dae3eÙ$c4398f9c-1fc4-11eb-0bbb-37f066c6027dÙ$25f92dec-1fc4-11eb-055d-f34deea81d0eÙ$e10a9b70-25a0-11eb-2aed-17ed8221c208Ù$746aa5bc-266c-11eb-14c9-63ccc313f5deÙ$bfb07a0a-2670-11eb-3938-772499c637b1Ù$09901de6-2672-11eb-3d50-05b176b729e7Ù$aea0d0b4-2672-11eb-231e-395c863827d3Ù$19957754-252d-11eb-1e0a-930b5208f5acÙ$0e19f82e-2685-11eb-2e99-0d094c1aa520Ù$3c7d33da-253d-11eb-0c5a-9b0d524c42f8Ù$06d28052-2531-11eb-39e2-e9613ab0401cÙ$e411a3bc-2538-11eb-3492-bfdd42b1445dÙ$d7801e88-2530-11eb-0b93-6f1c78d00eeaÙ$607058ec-253c-11eb-0fb6-add8cfb73a4f²upstream_cells_map€Ù$50ea30ba-25a1-11eb-05d8-b3d579f85652„´precedence_heuristic §cell_idÙ$50ea30ba-25a1-11eb-05d8-b3d579f85652´downstream_cells_map�¸expected_double_CO2_year�²upstream_cells_map�§missing�Ù$19957754-252d-11eb-1e0a-930b5208f5ac„´precedence_heuristic §cell_idÙ$19957754-252d-11eb-1e0a-930b5208f5ac´downstream_cells_map€²upstream_cells_map„¯Model.CO2_RCP26�¯Model.CO2_RCP85�¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811¯t_scenario_test‘Ù$40f1e7d8-252d-11eb-0549-49ca4e806e16Ù$d6d1b312-2543-11eb-1cb2-e5b801686ffb„´precedence_heuristic §cell_idÙ$d6d1b312-2543-11eb-1cb2-e5b801686ffb´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$02232964-2603-11eb-2c4c-c7b7e5fed7d1„´precedence_heuristic §cell_idÙ$02232964-2603-11eb-2c4c-c7b7e5fed7d1´downstream_cells_map‚£BÌ…’Ù$c4398f9c-1fc4-11eb-0bbb-37f066c6027dÙ$736ed1b6-1fc2-11eb-359e-a1be0a188670¢Ïƒ‘Ù$736ed1b6-1fc2-11eb-359e-a1be0a188670²upstream_cells_map€Ù$40f1e7d8-252d-11eb-0549-49ca4e806e16„´precedence_heuristic §cell_idÙ$40f1e7d8-252d-11eb-0549-49ca4e806e16´downstream_cells_map�¯t_scenario_test‘Ù$19957754-252d-11eb-1e0a-930b5208f5ac²upstream_cells_map‰¤Core�¤Base�·PlutoRunner.create_bond�«PlutoRunner�¡t‘Ù$ee1be5dc-252b-11eb-0865-291aa823b9e9¯Core.applicable�¥@bind�¨Base.get�¦Slider�Ù$253f4da0-2433-11eb-1e48-4906059607d3„´precedence_heuristic §cell_idÙ$253f4da0-2433-11eb-1e48-4906059607d3´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$d7801e88-2530-11eb-0b93-6f1c78d00eea„´precedence_heuristic §cell_idÙ$d7801e88-2530-11eb-0b93-6f1c78d00eea´downstream_cells_map�¢Î±‘Ù$607058ec-253c-11eb-0fb6-add8cfb73a4f²upstream_cells_map‰¢<=�¡<�¡-�¢>=�¡/�¦isless�¡+�¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811¡*�Ù$e411a3bc-2538-11eb-3492-bfdd42b1445d„´precedence_heuristic §cell_idÙ$e411a3bc-2538-11eb-3492-bfdd42b1445d´downstream_cells_map�«step_model!‘Ù$378aed18-252b-11eb-0b37-a3b511af2cb5²upstream_cells_map„¥Model‘Ù$930d7154-1fbf-11eb-1c3a-b1970d291811ªModel.run!�£end�¤Real�Ù$232b9bec-2544-11eb-0401-97a60bb172fc„´precedence_heuristic §cell_idÙ$232b9bec-2544-11eb-0401-97a60bb172fc´downstream_cells_map€²upstream_cells_map„§@md_str�¤Tneo‘Ù$de95efae-2675-11eb-0909-73afcd68fd42¤hint‘Ù$36f8c1e8-2433-11eb-1f6e-69dc552a4a07¨getindex�Ù$736ed1b6-1fc2-11eb-359e-a1be0a188670„´precedence_heuristic §cell_idÙ$736ed1b6-1fc2-11eb-359e-a1be0a188670´downstream_cells_map�©B_samples”Ù$49cb5174-1fc3-11eb-3670-c3868c9b0255Ù$1843dae6-2689-11eb-2aaf-036eb2f9341dÙ$d44daea2-252f-11eb-364f-377ae504dc04Ù$e27b2cd4-252f-11eb-20ef-0354db6220c2²upstream_cells_map‡¡<�£BÌ…‘Ù$02232964-2603-11eb-2c4c-c7b7e5fed7d1¢Ïƒ‘Ù$02232964-2603-11eb-2c4c-c7b7e5fed7d1¦isless�¦filter�¤rand�¦Normal�Ù$440271b6-25e8-11eb-26ce-1b80aa176aca„´precedence_heuristic §cell_idÙ$440271b6-25e8-11eb-26ce-1b80aa176aca´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$36ea4410-2433-11eb-1d98-ab4016245d95„´precedence_heuristic §cell_idÙ$36ea4410-2433-11eb-1d98-ab4016245d95´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$374522c4-2433-11eb-3da3-17419949defc„´precedence_heuristic §cell_idÙ$374522c4-2433-11eb-3da3-17419949defc´downstream_cells_map�«not_defined�²upstream_cells_map‡§@md_str�¦string�³Markdown.Admonition�«Markdown.MD�­Markdown.Code�¨Markdown�¨getindex�Ù$3d66bd30-259d-11eb-2694-471fb3a4a7be„´precedence_heuristic §cell_idÙ$3d66bd30-259d-11eb-2694-471fb3a4a7be´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$bade1372-25a1-11eb-35f4-4b43d4e8d156„´precedence_heuristic §cell_idÙ$bade1372-25a1-11eb-35f4-4b43d4e8d156´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$87e68a4a-2433-11eb-3e9d-21675850ed71„´precedence_heuristic §cell_idÙ$87e68a4a-2433-11eb-3e9d-21675850ed71´downstream_cells_map€²upstream_cells_mapƒ¤Base�®Base.Docs.HTML�©@html_str�Ù$7f961bc0-1fc5-11eb-1f18-612aeff0d8df„´precedence_heuristic §cell_idÙ$7f961bc0-1fc5-11eb-1f18-612aeff0d8df´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$3d72ab3a-2689-11eb-360d-9b3d829b78a9„´precedence_heuristic §cell_idÙ$3d72ab3a-2689-11eb-360d-9b3d829b78a9´downstream_cells_map€²upstream_cells_map€´cell_execution_orderÜkÙ$1e06178a-1fbf-11eb-32b3-61769a79b7c0Ù$169727be-2433-11eb-07ae-ab7976b5be90Ù$21524c08-2433-11eb-0c55-47b1bdc9e459Ù$23335418-2433-11eb-05e4-2b35dc6cca0eÙ$18be4f7c-2433-11eb-33cb-8d90ca6f124cÙ$253f4da0-2433-11eb-1e48-4906059607d3Ù$87e68a4a-2433-11eb-3e9d-21675850ed71Ù$fe3304f8-2668-11eb-066d-fdacadce5a19Ù$930d7154-1fbf-11eb-1c3a-b1970d291811Ù$6d2141d2-2b56-11eb-19ea-679a529dae3eÙ$1312525c-1fc0-11eb-2756-5bc3101d2260Ù$7f961bc0-1fc5-11eb-1f18-612aeff0d8dfÙ$fa7e6f7e-2434-11eb-1e61-1b1858bb0988Ù$16348b6a-1fc2-11eb-0b9c-65df528db2a1Ù$e296c6e8-259c-11eb-1385-53f757f4d585Ù$a86f13de-259d-11eb-3f46-1f6fb40020ceÙ$3d66bd30-259d-11eb-2694-471fb3a4a7beÙ$5f82dec8-259e-11eb-2f4f-4d661f44ef41Ù$56b68356-2601-11eb-39a9-5f4b8e580b87Ù$7d815988-1fc7-11eb-322a-4509e7128ce3Ù$aed8f00e-266b-11eb-156d-8bb09de0dc2bÙ$b9f882d8-266b-11eb-2998-75d6539088c7Ù$269200ec-259f-11eb-353b-0b73523ef71aÙ$2dfab366-25a1-11eb-15c9-b3dd9cd6b96cÙ$50ea30ba-25a1-11eb-05d8-b3d579f85652Ù$bade1372-25a1-11eb-35f4-4b43d4e8d156Ù$02232964-2603-11eb-2c4c-c7b7e5fed7d1Ù$c4398f9c-1fc4-11eb-0bbb-37f066c6027dÙ$25f92dec-1fc4-11eb-055d-f34deea81d0eÙ$736ed1b6-1fc2-11eb-359e-a1be0a188670Ù$49cb5174-1fc3-11eb-3670-c3868c9b0255Ù$f3abc83c-1fc7-11eb-1aa8-01ce67c8bddeÙ$1843dae6-2689-11eb-2aaf-036eb2f9341dÙ$3d72ab3a-2689-11eb-360d-9b3d829b78a9Ù$b6d7a362-1fc8-11eb-03bc-89464b55c6fcÙ$1f148d9a-1fc8-11eb-158e-9d784e390b24Ù$cf8dca6c-1fc8-11eb-1f89-099e6ba53c22Ù$d44daea2-252f-11eb-364f-377ae504dc04Ù$e27b2cd4-252f-11eb-20ef-0354db6220c2Ù$f94e635e-252f-11eb-1a52-310b628bd9b2Ù$23e24d88-2530-11eb-26ef-c5e4e8b4f276Ù$440271b6-25e8-11eb-26ce-1b80aa176acaÙ$cf276892-25e7-11eb-38f0-03f75c90dd9eÙ$5b5f25f0-266c-11eb-25d4-17e411c850c9Ù$3f823490-266d-11eb-1ba4-d5a23975c335Ù$971f401e-266c-11eb-3104-171ae299ef70Ù$746aa5bc-266c-11eb-14c9-63ccc313f5deÙ$a919d584-2670-11eb-1cf9-2327c8135d6dÙ$bfb07a0a-2670-11eb-3938-772499c637b1Ù$12cbbab0-2671-11eb-2b1f-038c206e84ceÙ$9596c2dc-2671-11eb-36b9-c1af7e5f1089Ù$f94a1d56-2671-11eb-2cdc-810a9c7a8a5fÙ$4b091fac-2672-11eb-0db8-75457788d85eÙ$9cdc5f84-2671-11eb-3c78-e3495bc64d33Ù$f688f9f2-2671-11eb-1d71-a57c9817433fÙ$049a866e-2672-11eb-29f7-bfea7ad8f572Ù$09901de6-2672-11eb-3d50-05b176b729e7Ù$aea0d0b4-2672-11eb-231e-395c863827d3Ù$9c32db5c-1fc9-11eb-029a-d5d554de1067Ù$ee1be5dc-252b-11eb-0865-291aa823b9e9Ù$e10a9b70-25a0-11eb-2aed-17ed8221c208Ù$40f1e7d8-252d-11eb-0549-49ca4e806e16Ù$19957754-252d-11eb-1e0a-930b5208f5acÙ$06c5139e-252d-11eb-2645-8b324b24c405Ù$f2e55166-25ff-11eb-0297-796e97c62b07Ù$1ea81214-1fca-11eb-2442-7b0b448b49d6Ù$a0ef04b0-25e9-11eb-1110-cde93601f712Ù$3e310cf8-25ec-11eb-07da-cb4a2c71ae34Ù$d6d1b312-2543-11eb-1cb2-e5b801686ffbÙ$3cbc95ba-2685-11eb-3810-3bf38aa33231Ù$68b2a560-2536-11eb-0cc4-27793b4d6a70Ù$0e19f82e-2685-11eb-2e99-0d094c1aa520Ù$1eabe908-268b-11eb-329b-b35160ec951eÙ$4c9173ac-2685-11eb-2129-99071821ebebÙ$e411a3bc-2538-11eb-3492-bfdd42b1445dÙ$736515ba-2685-11eb-38cb-65bfcf8d1b8dÙ$8b06b944-268c-11eb-0bfc-8d4dd21e1f02Ù$09ce27ca-268c-11eb-0cdd-c9801db876f8Ù$298deff4-2676-11eb-2595-e7e22f613ea1Ù$2bbf5a70-2676-11eb-1085-7130d4a30443Ù$3c7d33da-253d-11eb-0c5a-9b0d524c42f8Ù$35f87c2e-253d-11eb-0d79-61d89c1d9b5eÙ$de95efae-2675-11eb-0909-73afcd68fd42Ù$06d28052-2531-11eb-39e2-e9613ab0401cÙ$378aed18-252b-11eb-0b37-a3b511af2cb5Ù$c78e02b4-268a-11eb-0af7-f7c7620fcc34Ù$d7801e88-2530-11eb-0b93-6f1c78d00eeaÙ$607058ec-253c-11eb-0fb6-add8cfb73a4fÙ$9c1f73e0-268a-11eb-2bf1-216a5d869568Ù$11096250-2544-11eb-057b-d7112f20b05cÙ$9eb07a6e-2687-11eb-0de3-7bc6aa0eefb0Ù$3a35598a-2527-11eb-37e5-3b3e4c63c4f7Ù$5041cdee-2527-11eb-154f-0b0c68e11fe3Ù$36e2dfea-2433-11eb-1c90-bb93ab25b33cÙ$36ea4410-2433-11eb-1d98-ab4016245d95Ù$36f8c1e8-2433-11eb-1f6e-69dc552a4a07Ù$51e2e742-25a1-11eb-2511-ab3434eacc3eÙ$53c2eaf6-268b-11eb-0899-b91c03713da4Ù$cb15cd88-25ed-11eb-2be4-f31500a726c8Ù$232b9bec-2544-11eb-0401-97a60bb172fcÙ$37061f1e-2433-11eb-3879-2d31dc70a771Ù$371352ec-2433-11eb-153d-379afa8ed15eÙ$372002e4-2433-11eb-0b25-39ce1b1dd3d1Ù$372c1480-2433-11eb-3c4e-95a37d51835fÙ$3737be8e-2433-11eb-2049-2d6d8a5e4753Ù$374522c4-2433-11eb-3da3-17419949defcÙ$37552044-2433-11eb-1984-d16e355a7c10´last_hot_reload_timeË©shortpath°hw9 solutions.jl®process_status¥ready¤pathÙF/home/runner/work/disorganised-mess/disorganised-mess/hw9 solutions.jl­pluto_version¨v0.19.47®last_save_timeËAÚ 280` to simulate a model with concentrations fixed at 280 ppm. `EBM` also contains the simulation results, in two arrays: - `T` is the array of tempartures (°C, `Float64`). - `t` is the array of timestamps (years, `Float64`), of the same size as `T`. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$049a866e-2672-11eb-29f7-bfea7ad8f572„§cell_idÙ$049a866e-2672-11eb-29f7-bfea7ad8f572¤code¾temperature_response(t -> 280)¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$49cb5174-1fc3-11eb-3670-c3868c9b0255„§cell_idÙ$49cb5174-1fc3-11eb-3670-c3868c9b0255¤codeÙ\histogram(B_samples, size=(600, 250), label=nothing, xlabel="B [W/m²/K]", ylabel="samples")¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$09ce27ca-268c-11eb-0cdd-c9801db876f8„§cell_idÙ$09ce27ca-268c-11eb-0cdd-c9801db876f8¤codeºmd""" ##### Parameters """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$53c2eaf6-268b-11eb-0899-b91c03713da4„§cell_idÙ$53c2eaf6-268b-11eb-0899-b91c03713da4¤codeÙRhint(md" ```julia @bind log_CO2 Slider(â�“) ``` ```julia CO2 = 10^log_CO2 ``` ")¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$9c32db5c-1fc9-11eb-029a-d5d554de1067„§cell_idÙ$9c32db5c-1fc9-11eb-029a-d5d554de1067¤codeÚmd"""#### Exercise 1.6 - _Application to policy relevant questions_ We talked about two _emissions scenarios_: RCP2.6 (strong mitigation - controlled CO2 concentrations) and RCP8.5 (no mitigation - high CO2 concentrations). These are given by the following functions: """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$37552044-2433-11eb-1984-d16e355a7c10„§cell_idÙ$37552044-2433-11eb-1984-d16e355a7c10¤codeÙhTODO = html"TODO"¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$16348b6a-1fc2-11eb-0b9c-65df528db2a1„§cell_idÙ$16348b6a-1fc2-11eb-0b9c-65df528db2a1¤codeÙ\md""" ##### Exercise 1.1 - _Develop understanding for feedbacks and climate sensitivity_ """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$21524c08-2433-11eb-0c55-47b1bdc9e459„§cell_idÙ$21524c08-2433-11eb-0c55-47b1bdc9e459¤codeÙFmd""" # **Homework 9**: _Climate modeling I_ `18.S191`, fall 2020 """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$1f148d9a-1fc8-11eb-158e-9d784e390b24„§cell_idÙ$1f148d9a-1fc8-11eb-158e-9d784e390b24¤codeÙ5histogram(ECS_samples, xlims=(0, 8), size=(500, 240))¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$11096250-2544-11eb-057b-d7112f20b05c„§cell_idÙ$11096250-2544-11eb-057b-d7112f20b05c¤codeÙzmd""" #### Exercise 2.2 👉 Find the **lowest COâ‚‚ concentration** necessary to melt the Snowball, programatically. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$7d815988-1fc7-11eb-322a-4509e7128ce3„§cell_idÙ$7d815988-1fc7-11eb-322a-4509e7128ce3¤codeÚÅif reveal_nonnegative_B_answer md""" This is known as the "runaway greenhouse effect", where warming self-amplifies so strongly through *positive feedbacks* that the warming continues forever (or until the oceans boil away and there is no longer a reservoir or water to support a *water vapor feedback*. This is thought to explain Venus' extremely hot and hostile climate, but as you can see is extremely unlikely to occur on present-day Earth. """ end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$1e06178a-1fbf-11eb-32b3-61769a79b7c0„§cell_idÙ$1e06178a-1fbf-11eb-32b3-61769a79b7c0¤codeÚbegin import Pkg Pkg.activate(mktempdir()) Pkg.add([ "Plots", "PlutoUI", "LaTeXStrings", "Distributions", "Random", ]) using LaTeXStrings using Plots using PlutoUI using Random, Distributions Random.seed!(123) md"##### Package dependencies" end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$169727be-2433-11eb-07ae-ab7976b5be90„§cell_idÙ$169727be-2433-11eb-07ae-ab7976b5be90¤code»md"_homework 9, version 0_"¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$3e310cf8-25ec-11eb-07da-cb4a2c71ae34„§cell_idÙ$3e310cf8-25ec-11eb-07da-cb4a2c71ae34¤codeÚ md""" We talked about a second theory -- a large increase in COâ‚‚ (by volcanoes) could have caused a strong enough greenhouse effect to melt the Snowball. If we imagine that the COâ‚‚ then decreased (e.g. by getting sequestered by the now liquid ocean), we might be able to explain how we transitioned from a hostile Snowball Earth to today's habitable "Waterball" Earth. In this exercise, you will estimate how much COâ‚‚ would be needed to melt the Snowball and visualize a possible trajectory for Earth's climate over the past 700 million years by making an interactive *bifurcation diagram*. #### Exercise 2.1 In the [lecture notebook](https://github.com/hdrake/simplEarth/blob/master/2_ebm_multiple_equilibria.jl) (video above), we had a bifurcation diagram of $S$ (solar insolation) vs $T$ (temperature). We increased $S$, watched our point move right in the diagram until we found the tipping point. This time we will do the same, but we vary the COâ‚‚ concentration, and keep $S$ fixed at its default (present day) value. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$298deff4-2676-11eb-2595-e7e22f613ea1„§cell_idÙ$298deff4-2676-11eb-2595-e7e22f613ea1¤code«CO2min = 10¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$f688f9f2-2671-11eb-1d71-a57c9817433f„§cell_idÙ$f688f9f2-2671-11eb-1d71-a57c9817433f¤codeÙSfunction temperature_response(CO2::Function, B::Float64=-1.3) return missing end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$51e2e742-25a1-11eb-2511-ab3434eacc3e„§cell_idÙ$51e2e742-25a1-11eb-2511-ab3434eacc3e¤codeÙ4hint(md"The function `findfirst` might be helpful.")¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$746aa5bc-266c-11eb-14c9-63ccc313f5de„§cell_idÙ$746aa5bc-266c-11eb-14c9-63ccc313f5de¤codeÙqempty_ebm = Model.EBM( 14.0, # initial temperature 1850, # initial year 1, # Δt t -> 280.0, # CO2 function )¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$68b2a560-2536-11eb-0cc4-27793b4d6a70„§cell_idÙ$68b2a560-2536-11eb-0cc4-27793b4d6a70¤codeÚ¾function add_cold_hot_areas!(p) left, right = xlims(p) plot!(p, [left, right], [-60, -60], fillrange=[-10., -10.], fillalpha=0.3, c=:lightblue, label=nothing ) annotate!(p, left+12, -19, text("completely\nfrozen", 10, :darkblue, :left) ) plot!(p, [left, right], [10, 10], fillrange=[80., 80.], fillalpha=0.09, c=:red, lw=0., label=nothing ) annotate!(p, left+12, 15, text("no ice", 10, :darkred, :left) ) end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$23335418-2433-11eb-05e4-2b35dc6cca0e„§cell_idÙ$23335418-2433-11eb-05e4-2b35dc6cca0e¤codeÚ# edit the code below to set your name and kerberos ID (i.e. email without @mit.edu) student = (name = "Jazzy Doe", kerberos_id = "jazz") # you might need to wait until all other cells in this notebook have completed running. # scroll around the page to see what's up¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$25f92dec-1fc4-11eb-055d-f34deea81d0e„§cell_idÙ$25f92dec-1fc4-11eb-055d-f34deea81d0e¤codeÚðlet double_CO2(t) = if t >= 0 2*Model.CO2_PI else Model.CO2_PI end # the definition of A depends on B, so we recalculate: A = Model.S*(1. - Model.α)/4 + B_slider*Model.T0 # create the model ebm_ECS = Model.EBM(14., -100., 1., double_CO2, A=A, B=B_slider); Model.run!(ebm_ECS, 300) ecs = ECS(B=B_slider) p = plot( size=(500,250), legend=:bottomright, title="Transient response to instant doubling of COâ‚‚", ylabel="temperature change [°C]", xlabel="years after doubling", ylim=(-.5, (isfinite(ecs) && ecs < 4) ? 4 : 10), ) plot!(p, [ebm_ECS.t[1], ebm_ECS.t[end]], ecs .* [1,1], ls=:dash, color=:darkred, label="ECS") plot!(p, ebm_ECS.t, ebm_ECS.T .- ebm_ECS.T[1], label="ΔT(t) = T(t) - Tâ‚€") end |> as_svg¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$aea0d0b4-2672-11eb-231e-395c863827d3„§cell_idÙ$aea0d0b4-2672-11eb-231e-395c863827d3¤codeÙ+temperature_response(Model.CO2_RCP85, -1.0)¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$18be4f7c-2433-11eb-33cb-8d90ca6f124c„§cell_idÙ$18be4f7c-2433-11eb-33cb-8d90ca6f124c¤codeÙPmd""" Submission by: **_$(student.name)_** ($(student.kerberos_id)@mit.edu) """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$5041cdee-2527-11eb-154f-0b0c68e11fe3„§cell_idÙ$5041cdee-2527-11eb-154f-0b0c68e11fe3¤codeÙylines_i_edited = md""" Abstraction, lines 1-219; Array Basics, lines 1-137; Course Intro, lines 1-144 (_for example_) """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$378aed18-252b-11eb-0b37-a3b511af2cb5„§cell_idÙ$378aed18-252b-11eb-0b37-a3b511af2cb5¤codeÚÄlet p = plot( xlims=(CO2min, CO2max), ylims=(-55, 75), xaxis=:log, xlabel="CO2 concentration [ppm]", ylabel="Global temperature T [°C]", title="Earth's CO2 concentration bifurcation diagram", legend=:topleft ) add_cold_hot_areas!(p) add_reference_points!(p) # your code here # TODO: step_model!(ebm, CO2) plot!(p, [ebm.CO2(ebm.t[end])], [ebm.T[end]], label=nothing, color=:black, shape=:circle, ) end |> as_svg¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$b6d7a362-1fc8-11eb-03bc-89464b55c6fc„§cell_idÙ$b6d7a362-1fc8-11eb-03bc-89464b55c6fc¤code¯md"**Answer:**"¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$cf276892-25e7-11eb-38f0-03f75c90dd9e„§cell_idÙ$cf276892-25e7-11eb-38f0-03f75c90dd9e¤codeÙAobservations_from_the_order_of_averaging = md""" Hello world! """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$cb15cd88-25ed-11eb-2be4-f31500a726c8„§cell_idÙ$cb15cd88-25ed-11eb-2be4-f31500a726c8¤codeÙ`hint(md"Use a condition on the albedo or temperature to check whether the Snowball has melted.")¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$37061f1e-2433-11eb-3879-2d31dc70a771„§cell_idÙ$37061f1e-2433-11eb-3879-2d31dc70a771¤codeÙSalmost(text) = Markdown.MD(Markdown.Admonition("warning", "Almost there!", [text]))¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$3c7d33da-253d-11eb-0c5a-9b0d524c42f8„§cell_idÙ$3c7d33da-253d-11eb-0c5a-9b0d524c42f8¤codeÙ^begin @bind log_CO2 Slider(log10(CO2min):0.01:log10(CO2max); default=log10(Model.CO2_PI)) end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$9c1f73e0-268a-11eb-2bf1-216a5d869568„§cell_idÙ$9c1f73e0-268a-11eb-2bf1-216a5d869568¤codeÙÎmd""" If you like, make the visualization more informative! Like in the lecture notebook, you could add a trail behind the black dot, or you could plot the stable and unstable branches. It's up to you! """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$56b68356-2601-11eb-39a9-5f4b8e580b87„§cell_idÙ$56b68356-2601-11eb-39a9-5f4b8e580b87¤codeÙBmd"Reveal answer: $(@bind reveal_nonnegative_B_answer CheckBox())"¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$12cbbab0-2671-11eb-2b1f-038c206e84ce„§cell_idÙ$12cbbab0-2671-11eb-2b1f-038c206e84ce¤codeÚÎmd""" Again, look inside `simulated_model` and notice that `T` and `t` have accumulated the simulation results. In this simulation, we used `T0 = 14` and `CO2 = t -> 280`, which is why `T` is constant during our simulation. These parameters are the default, pre-industrial values, and our model is based on this equilibrium. 👉 Run a simulation with policy scenario RCP8.5, and plot the computed temperature graph. What is the global temperature at 2100? """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$9596c2dc-2671-11eb-36b9-c1af7e5f1089„§cell_idÙ$9596c2dc-2671-11eb-36b9-c1af7e5f1089¤codeÙ*simulated_rcp85_model = let missing end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$f94a1d56-2671-11eb-2cdc-810a9c7a8a5f„§cell_idÙ$f94a1d56-2671-11eb-2cdc-810a9c7a8a5f¤code ¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$4b091fac-2672-11eb-0db8-75457788d85e„§cell_idÙ$4b091fac-2672-11eb-0db8-75457788d85e¤codeÙÀmd""" Additional parameters can be set using keyword arguments. For example: ```julia Model.EBM(14, 1850, 1, t -> 280.0; B=-2.0) ``` Creates the same model as before, but with `B = -2.0`. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$1eabe908-268b-11eb-329b-b35160ec951e„§cell_idÙ$1eabe908-268b-11eb-329b-b35160ec951e¤codeÙ›md""" 👉 Create a slider for `CO2` between `CO2min` and `CO2max`. Just like the horizontal axis of our plot, we want the slider to be _logarithmic_. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$d44daea2-252f-11eb-364f-377ae504dc04„§cell_idÙ$d44daea2-252f-11eb-364f-377ae504dc04¤codeÙ$ecs_of_mean = ECS(B=mean(B_samples))¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$971f401e-266c-11eb-3104-171ae299ef70„§cell_idÙ$971f401e-266c-11eb-3104-171ae299ef70¤codeÙ7md""" You can set up an instance of `EBM` like so: """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$de95efae-2675-11eb-0909-73afcd68fd42„§cell_idÙ$de95efae-2675-11eb-0909-73afcd68fd42¤codeªTneo = -48¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$23e24d88-2530-11eb-26ef-c5e4e8b4f276„§cell_idÙ$23e24d88-2530-11eb-26ef-c5e4e8b4f276¤codeÙ@sum(ECS_samples) do e e > mean_of_ecs end / length(ECS_samples)¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$2dfab366-25a1-11eb-15c9-b3dd9cd6b96c„§cell_idÙ$2dfab366-25a1-11eb-15c9-b3dd9cd6b96c¤codeÙrmd""" 👉 In what year are we expected to have doubled the COâ‚‚ concentration, under policy scenario RCP8.5? """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$1ea81214-1fca-11eb-2442-7b0b448b49d6„§cell_idÙ$1ea81214-1fca-11eb-2442-7b0b448b49d6¤codeÙÖmd""" ## **Exercise 2** - _How did Snowball Earth melt?_ In lecture 21 (see below), we discovered that increases in the brightness of the Sun are not sufficient to explain how Snowball Earth eventually melted. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$a919d584-2670-11eb-1cf9-2327c8135d6d„§cell_idÙ$a919d584-2670-11eb-1cf9-2327c8135d6d¤codeÙ{md""" Have look inside this object. We see that `T` and `t` are initialized to a 1-element array. Let's run our model: """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$06c5139e-252d-11eb-2645-8b324b24c405„§cell_idÙ$06c5139e-252d-11eb-2645-8b324b24c405¤codeÚmd""" We are interested in how the **uncertainty in our input** $B$ (the climate feedback paramter) *propagates* through our model to determine the **uncertainty in our output** $T(t)$, for a given emissions scenario. The goal of this exercise is to answer the following by using *Monte Carlo Simulation* for *uncertainty propagation*: > 👉 What is the probability that we see more than 2°C of warming by 2100 under the low-emissions scenario RCP2.6? What about under the high-emissions scenario RCP8.5? """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$b9f882d8-266b-11eb-2998-75d6539088c7„§cell_idÙ$b9f882d8-266b-11eb-2998-75d6539088c7¤code ¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$1843dae6-2689-11eb-2aaf-036eb2f9341d„§cell_idÙ$1843dae6-2689-11eb-2aaf-036eb2f9341d¤code¿ECS_samples = ECS.(B=B_samples)¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$35f87c2e-253d-11eb-0d79-61d89c1d9b5e„§cell_idÙ$35f87c2e-253d-11eb-0d79-61d89c1d9b5e¤code°CO2 = 10^log_CO2¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$e296c6e8-259c-11eb-1385-53f757f4d585„§cell_idÙ$e296c6e8-259c-11eb-1385-53f757f4d585¤codeÙÅmd""" 👉 Change the value of $B$ using the slider above. What does it mean for a climate system to have a more negative value of $B$? Explain why we call $B$ the _climate feedback parameter_. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$06d28052-2531-11eb-39e2-e9613ab0401c„§cell_idÙ$06d28052-2531-11eb-39e2-e9613ab0401c¤codeÙ.ebm = Model.EBM(Tneo, 0., 5., Model.CO2_const)¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$e10a9b70-25a0-11eb-2aed-17ed8221c208„§cell_idÙ$e10a9b70-25a0-11eb-2aed-17ed8221c208¤codeÙOplot(t, Model.CO2_RCP85.(t), ylim=(0,1200), ylabel="CO2 concentration [ppm]")¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$36e2dfea-2433-11eb-1c90-bb93ab25b33c„§cell_idÙ$36e2dfea-2433-11eb-1c90-bb93ab25b33c¤codeÙÇif student.name == "Jazzy Doe" || student.kerberos_id == "jazz" md""" !!! danger "Before you submit" Remember to fill in your **name** and **Kerberos ID** at the top of this notebook. """ end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$1312525c-1fc0-11eb-2756-5bc3101d2260„§cell_idÙ$1312525c-1fc0-11eb-2756-5bc3101d2260¤codeÚÇmd"""## **Exercise 1** - _policy goals under uncertainty_ A recent ground-breaking [review paper](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2019RG000678) produced the most comprehensive and up-to-date estimate of the *climate feedback parameter*, which they find to be $B \approx \mathcal{N}(-1.3, 0.4),$ i.e. our knowledge of the real value is normally distributed with a mean value $\overline{B} = -1.3$ W/m²/K and a standard deviation $\sigma = 0.4$ W/m²/K. These values are not very intuitive, so let us convert them into more policy-relevant numbers. **Definition:** *Equilibrium climate sensitivity (ECS)* is defined as the amount of warming $\Delta T$ caused by a doubling of COâ‚‚ (e.g. from the pre-industrial value 280 ppm to 560 ppm), at equilibrium. At equilibrium, the energy balance model equation is: $0 = \frac{S(1 - α)}{4} - (A - BT_{eq}) + a \ln\left( \frac{2\;\text{CO}â‚‚_{\text{PI}}}{\text{CO}â‚‚_{\text{PI}}} \right)$ From this, we subtract the preindustrial energy balance, which is given by: $0 = \frac{S(1-α)}{4} - (A - BT_{0}),$ The result of this subtraction, after rearranging, is our definition of $\text{ECS}$: $\text{ECS} \equiv T_{eq} - T_{0} = -\frac{a\ln(2)}{B}$ """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$0e19f82e-2685-11eb-2e99-0d094c1aa520„§cell_idÙ$0e19f82e-2685-11eb-2e99-0d094c1aa520¤codeÚ›function add_reference_points!(p) plot!(p, [Model.CO2_PI, Model.CO2_PI], [-55, 75], color=:grey, alpha=0.3, lw=8, label="Pre-industrial CO2" ) plot!(p, [Model.CO2_PI], [Model.T0], shape=:circle, color=:orange, markersize=8, label="Our preindustrial climate" ) plot!(p, [Model.CO2_PI], [-38.3], shape=:circle, color=:aqua, markersize=8, label="Alternate preindustrial climate" ) end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$a0ef04b0-25e9-11eb-1110-cde93601f712„§cell_idÙ$a0ef04b0-25e9-11eb-1110-cde93601f712¤codeÙñhtml""" """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$3f823490-266d-11eb-1ba4-d5a23975c335„§cell_idÙ$3f823490-266d-11eb-1ba4-d5a23975c335¤codeÚôhtml"""

Properties of an EBM obect:

NameDescription
ALinearized outgoing thermal radiation: offset [W/m²]
BLinearized outgoing thermal radiation: slope. or: climate feedback parameter [W/m²/°C]
αPlanet albedo, 0.0-1.0 [unitless]
SSolar insulation [W/m²]
CAtmosphere and upper-ocean heat capacity [J/m²/°C]
aCO₂ forcing effect [W/m²]
CO2_PIPre-industrial COâ‚‚ concentration [ppm]
"""¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$fe3304f8-2668-11eb-066d-fdacadce5a19„§cell_idÙ$fe3304f8-2668-11eb-066d-fdacadce5a19¤codeÙçmd""" _Before working on the homework, make sure that you have watched the first lecture on climate modeling 👆. We have included the important functions from this lecture notebook in the next cell. Feel free to have a look!_ """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$4c9173ac-2685-11eb-2129-99071821ebeb„§cell_idÙ$4c9173ac-2685-11eb-2129-99071821ebeb¤codeÚ3md""" 👉 Write a function `step_model!` that takes an existing `ebm` and `new_CO2`, which performs a step of our interactive process: - Reset the model by setting the `ebm.t` and `ebm.T` arrays to a single element. _Which value?_ - Assign a new function to `ebm.CO2`. _What function?_ - Run the model. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$3737be8e-2433-11eb-2049-2d6d8a5e4753„§cell_idÙ$3737be8e-2433-11eb-2049-2d6d8a5e4753¤codeÙYcorrect(text=rand(yays)) = Markdown.MD(Markdown.Admonition("correct", "Got it!", [text]))¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$bfb07a0a-2670-11eb-3938-772499c637b1„§cell_idÙ$bfb07a0a-2670-11eb-3938-772499c637b1¤codeÙasimulated_model = let ebm = Model.EBM(14.0, 1850, 1, t -> 280.0) Model.run!(ebm, 2020) ebm end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$ee1be5dc-252b-11eb-0865-291aa823b9e9„§cell_idÙ$ee1be5dc-252b-11eb-0865-291aa823b9e9¤code­t = 1850:2100¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$e27b2cd4-252f-11eb-20ef-0354db6220c2„§cell_idÙ$e27b2cd4-252f-11eb-20ef-0354db6220c2¤codeÙ%mean_of_ecs = mean(ECS.(B=B_samples))¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$c4398f9c-1fc4-11eb-0bbb-37f066c6027d„§cell_idÙ$c4398f9c-1fc4-11eb-0bbb-37f066c6027d¤codeÙ(ECS(; B=BÌ…, a=Model.a) = -a*log(2.)./B;¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$f3abc83c-1fc7-11eb-1aa8-01ce67c8bdde„§cell_idÙ$f3abc83c-1fc7-11eb-1aa8-01ce67c8bdde¤codeÙŽmd""" 👉 Generate a probability distribution for the ECS based on the probability distribution function for $B$ above. Plot a histogram. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$c78e02b4-268a-11eb-0af7-f7c7620fcc34„§cell_idÙ$c78e02b4-268a-11eb-0af7-f7c7620fcc34¤codeÙBmd""" The albedo feedback is implemented by the methods below: """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$9cdc5f84-2671-11eb-3c78-e3495bc64d33„§cell_idÙ$9cdc5f84-2671-11eb-3c78-e3495bc64d33¤codeÙ·md""" 👉 Write a function `temperature_response` that takes a function `CO2` and an optional value `B` as parameters, and returns the temperature at 2100 according to our model. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$3cbc95ba-2685-11eb-3810-3bf38aa33231„§cell_idÙ$3cbc95ba-2685-11eb-3810-3bf38aa33231¤codeÙ'md""" We used two helper functions: """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$aed8f00e-266b-11eb-156d-8bb09de0dc2b„§cell_idÙ$aed8f00e-266b-11eb-156d-8bb09de0dc2b¤codeÙCmd""" 👉 Create a graph to visualize ECS as a function of B. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$269200ec-259f-11eb-353b-0b73523ef71a„§cell_idÙ$269200ec-259f-11eb-353b-0b73523ef71a¤codeÚÌmd""" #### Exercise 1.2 - _Doubling COâ‚‚_ To compute ECS, we doubled the COâ‚‚ in our atmosphere. This factor 2 is not entirely arbitrary: without substantial effort to reduce COâ‚‚ emissions, we are expected to **at least** double the COâ‚‚ in our atmosphere by 2100. Right now, our COâ‚‚ concentration is 415 ppm -- $(round(415 / 280, digits=3)) times the pre-industrial value of 280 ppm from 1850. The COâ‚‚ concentrations in the _future_ depend on human action. There are several models for future concentrations, which are formed by assuming different _policy scenarios_. A baseline model is RCP8.5 - a "worst-case" high-emissions scenario. In our notebook, this model is given as a function of ``t``. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$8b06b944-268c-11eb-0bfc-8d4dd21e1f02„§cell_idÙ$8b06b944-268c-11eb-0bfc-8d4dd21e1f02¤codeÙEmd""" 👉 Inside the plot cell, call the function `step_model!`. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$6d2141d2-2b56-11eb-19ea-679a529dae3e„§cell_idÙ$6d2141d2-2b56-11eb-19ea-679a529dae3e¤code§Model.A¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$5f82dec8-259e-11eb-2f4f-4d661f44ef41„§cell_idÙ$5f82dec8-259e-11eb-2f4f-4d661f44ef41¤codeÙ8observations_from_nonnegative_B = md""" Hello world! """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$372c1480-2433-11eb-3c4e-95a37d51835f„§cell_idÙ$372c1480-2433-11eb-3c4e-95a37d51835f¤codeÙÕyays = [md"Fantastic!", md"Splendid!", md"Great!", md"Yay â�¤", md"Great! 🎉", md"Well done!", md"Keep it up!", md"Good job!", md"Awesome!", md"You got the right answer!", md"Let's move on to the next section."]¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$f94e635e-252f-11eb-1a52-310b628bd9b2„§cell_idÙ$f94e635e-252f-11eb-1a52-310b628bd9b2¤codeÙ@sum(ECS_samples) do e e > ecs_of_mean end / length(ECS_samples)¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$fa7e6f7e-2434-11eb-1e61-1b1858bb0988„§cell_idÙ$fa7e6f7e-2434-11eb-1e61-1b1858bb0988¤codeÙWmd""" ``B = `` $(@bind B_slider Slider(-2.5:.001:0; show_value=true, default=-1.3)) """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$a86f13de-259d-11eb-3f46-1f6fb40020ce„§cell_idÙ$a86f13de-259d-11eb-3f46-1f6fb40020ce¤codeÙ5observations_from_changing_B = md""" Hello world! """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$930d7154-1fbf-11eb-1c3a-b1970d291811„§cell_idÙ$930d7154-1fbf-11eb-1c3a-b1970d291811¤codeÚ Ymodule Model const S = 1368; # solar insolation [W/m^2] (energy per unit time per unit area) const α = 0.3; # albedo, or planetary reflectivity [unitless] const B = -1.3; # climate feedback parameter [W/m^2/°C], const T0 = 14.; # preindustrial temperature [°C] absorbed_solar_radiation(; α=α, S=S) = S*(1 - α)/4; # [W/m^2] outgoing_thermal_radiation(T; A=A, B=B) = A - B*T; const A = S*(1. - α)/4 + B*T0; # [W/m^2]. greenhouse_effect(CO2; a=a, CO2_PI=CO2_PI) = a*log(CO2/CO2_PI); const a = 5.0; # CO2 forcing coefficient [W/m^2] const CO2_PI = 280.; # preindustrial CO2 concentration [parts per million; ppm]; CO2_const(t) = CO2_PI; # constant CO2 concentrations const C = 51.; # atmosphere and upper-ocean heat capacity [J/m^2/°C] function timestep!(ebm) append!(ebm.T, ebm.T[end] + ebm.Δt*tendency(ebm)); append!(ebm.t, ebm.t[end] + ebm.Δt); end; tendency(ebm) = (1. /ebm.C) * ( + absorbed_solar_radiation(α=ebm.α, S=ebm.S) - outgoing_thermal_radiation(ebm.T[end], A=ebm.A, B=ebm.B) + greenhouse_effect(ebm.CO2(ebm.t[end]), a=ebm.a, CO2_PI=ebm.CO2_PI) ); begin mutable struct EBM T::Array{Float64, 1} t::Array{Float64, 1} Δt::Float64 CO2::Function C::Float64 a::Float64 A::Float64 B::Float64 CO2_PI::Float64 α::Float64 S::Float64 end; # Make constant parameters optional kwargs EBM(T::Array{Float64, 1}, t::Array{Float64, 1}, Δt::Real, CO2::Function; C=C, a=a, A=A, B=B, CO2_PI=CO2_PI, α=α, S=S) = ( EBM(T, t, Δt, CO2, C, a, A, B, CO2_PI, α, S) ); # Construct from float inputs for convenience EBM(T0::Real, t0::Real, Δt::Real, CO2::Function; C=C, a=a, A=A, B=B, CO2_PI=CO2_PI, α=α, S=S) = ( EBM(Float64[T0], Float64[t0], Δt, CO2; C=C, a=a, A=A, B=B, CO2_PI=CO2_PI, α=α, S=S); ); end; begin function run!(ebm::EBM, end_year::Real) while ebm.t[end] < end_year timestep!(ebm) end end; run!(ebm) = run!(ebm, 200.) # run for 200 years by default end CO2_hist(t) = CO2_PI * (1 .+ fractional_increase(t)); fractional_increase(t) = ((t .- 1850.)/220).^3; begin CO2_RCP26(t) = CO2_PI * (1 .+ fractional_increase(t) .* min.(1., exp.(-((t .-1850.).-170)/100))) ; RCP26 = EBM(T0, 1850., 1., CO2_RCP26) run!(RCP26, 2100.) CO2_RCP85(t) = CO2_PI * (1 .+ fractional_increase(t) .* max.(1., exp.(((t .-1850.).-170)/100))); RCP85 = EBM(T0, 1850., 1., CO2_RCP85) run!(RCP85, 2100.) end end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$50ea30ba-25a1-11eb-05d8-b3d579f85652„§cell_idÙ$50ea30ba-25a1-11eb-05d8-b3d579f85652¤codeÙ/expected_double_CO2_year = let missing end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$19957754-252d-11eb-1e0a-930b5208f5ac„§cell_idÙ$19957754-252d-11eb-1e0a-930b5208f5ac¤codeÙBModel.CO2_RCP26(t_scenario_test), Model.CO2_RCP85(t_scenario_test)¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$d6d1b312-2543-11eb-1cb2-e5b801686ffb„§cell_idÙ$d6d1b312-2543-11eb-1cb2-e5b801686ffb¤codeÙëmd""" Below we have an empty diagram, which is already set up with a COâ‚‚ vs $T$ diagram, with a logirthmic horizontal axis. Now it's your turn! We have written some pointers below to help you, but feel free to do it your own way. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$02232964-2603-11eb-2c4c-c7b7e5fed7d1„§cell_idÙ$02232964-2603-11eb-2c4c-c7b7e5fed7d1¤code´BÌ… = -1.3; σ = 0.4¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$40f1e7d8-252d-11eb-0549-49ca4e806e16„§cell_idÙ$40f1e7d8-252d-11eb-0549-49ca4e806e16¤codeÙ>@bind t_scenario_test Slider(t; show_value=true, default=1850)¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$253f4da0-2433-11eb-1e48-4906059607d3„§cell_idÙ$253f4da0-2433-11eb-1e48-4906059607d3¤codeÙ)md"_Let's create a package environment:_"¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$d7801e88-2530-11eb-0b93-6f1c78d00eea„§cell_idÙ$d7801e88-2530-11eb-0b93-6f1c78d00eea¤codeÙ¯function α(T; α0=Model.α, αi=0.5, ΔT=10.) if T < -ΔT return αi elseif -ΔT <= T < ΔT return αi + (α0-αi)*(T+ΔT)/(2ΔT) elseif T >= ΔT return α0 end end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$e411a3bc-2538-11eb-3492-bfdd42b1445d„§cell_idÙ$e411a3bc-2538-11eb-3492-bfdd42b1445d¤codeÙ‘function step_model!(ebm::Model.EBM, new_CO2::Real) ebm.T = [ebm.T[end]] ebm.t = [0] ebm.CO2 = t -> new_CO2 Model.run!(ebm, 500) ebm end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$232b9bec-2544-11eb-0401-97a60bb172fc„§cell_idÙ$232b9bec-2544-11eb-0401-97a60bb172fc¤codeÙÅhint(md"Start by writing a function `equilibrium_temperature(CO2)` which creates a new `EBM` at the Snowball Earth temperature T = $(Tneo) and returns the final temperature for a given CO2 level.")¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$736ed1b6-1fc2-11eb-359e-a1be0a188670„§cell_idÙ$736ed1b6-1fc2-11eb-359e-a1be0a188670¤codeÙ¶B_samples = let B_distribution = Normal(BÌ…, σ) Nsamples = 5000 samples = rand(B_distribution, Nsamples) # we only sample negative values of B filter(x -> x < 0, samples) end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$440271b6-25e8-11eb-26ce-1b80aa176aca„§cell_idÙ$440271b6-25e8-11eb-26ce-1b80aa176aca¤codeÙ›md"👉 Does accounting for uncertainty in feedbacks make our expectation of global warming better (less implied warming) or worse (more implied warming)?"¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$36ea4410-2433-11eb-1d98-ab4016245d95„§cell_idÙ$36ea4410-2433-11eb-1d98-ab4016245d95¤codeÙImd"## Function library Just some helper functions used in the notebook."¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$374522c4-2433-11eb-3da3-17419949defc„§cell_idÙ$374522c4-2433-11eb-3da3-17419949defc¤codeÙ±not_defined(variable_name) = Markdown.MD(Markdown.Admonition("danger", "Oopsie!", [md"Make sure that you define a variable called **$(Markdown.Code(string(variable_name)))**"]))¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$3d66bd30-259d-11eb-2694-471fb3a4a7be„§cell_idÙ$3d66bd30-259d-11eb-2694-471fb3a4a7be¤codeÙFmd""" 👉 What happens when $B$ is greater than or equal to zero? """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$bade1372-25a1-11eb-35f4-4b43d4e8d156„§cell_idÙ$bade1372-25a1-11eb-35f4-4b43d4e8d156¤codeÚ&md""" #### Exercise 1.3 - _Uncertainty in B_ The climate feedback parameter ``B`` is not something that we can control– it is an emergent property of the global climate system. Unfortunately, ``B`` is also difficult to quantify empirically (the relevant processes are difficult or impossible to observe directly), so there remains uncertainty as to its exact value. A value of ``B`` close to zero means that an increase in COâ‚‚ concentrations will have a larger impact on global warming, and that more action is needed to stay below a maximum temperature. In answering such policy-related question, we need to take the uncertainty in ``B`` into account. In this exercise, we will do so using a Monte Carlo simulation: we generate a sample of values for ``B``, and use these values in our analysis. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$87e68a4a-2433-11eb-3e9d-21675850ed71„§cell_idÙ$87e68a4a-2433-11eb-3e9d-21675850ed71¤codeÙèhtml""" """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÂÙ$7f961bc0-1fc5-11eb-1f18-612aeff0d8df„§cell_idÙ$7f961bc0-1fc5-11eb-1f18-612aeff0d8df¤codeÚËmd"""The plot below provides an example of an "abrupt 2xCOâ‚‚" experiment, a classic experimental treatment method in climate modelling which is used in practice to estimate ECS for a particular model. (Note: in complicated climate models the values of the parameters $a$ and $B$ are not specified *a priori*, but *emerge* as outputs of the simulation.) The simulation begins at the preindustrial equilibrium, i.e. a temperature $T_{0} = 14$°C is in balance with the pre-industrial COâ‚‚ concentration of 280 ppm until COâ‚‚ is abruptly doubled from 280 ppm to 560 ppm. The climate responds by warming rapidly, and after a few hundred years approaches the equilibrium climate sensitivity value, by definition. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$3d72ab3a-2689-11eb-360d-9b3d829b78a9„§cell_idÙ$3d72ab3a-2689-11eb-360d-9b3d829b78a9¤code·# ECS_samples = missing¨metadataƒ©show_logsèdisabled®skip_as_script«code_folded«notebook_idÙ$abab0be8-4aa5-11f0-0771-6787ab7aa1d4«in_temp_dir¨metadata€